DrawerLayout侧拉菜单控件的使用

2018-11-22  本文已影响33人  程序猿的小生活

1.DrawerLayout是在Android的support库中增加了一个专门用于创建侧滑菜单的组件,该组件首先在layout布局中定义,如下:

 <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
  <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="8dp"
                    android:layout_toRightOf="@+id/cyyj_image"
                    android:gravity="center"
                    android:text="我是主界面"
                    android:textColor="#6b6969"
                    android:textSize="14sp" />
   </LinearLayout>
   <LinearLayout
           android:background="#ffffff"
           android:layout_gravity="left"
            android:layout_width="300dp"
            android:layout_height="match_parent"
            android:orientation="vertical">
  <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="8dp"
                    android:layout_toRightOf="@+id/cyyj_image"
                    android:gravity="center"
                    android:text="我是侧拉界面"
                    android:textColor="#6b6969"
                    android:textSize="14sp" />
   </LinearLayout>
    </android.support.v4.widget.DrawerLayout>

如上面布局所示,android.support.v4.widget.DrawerLayout是侧滑的控件,控件下面有两个LinearLayout布局,其中第一个LinearLayout布局为主界面,可以在里面布置主界面的内容,第二个LinearLayout布局为侧拉界面,这里需要注意的是设置 android:layout_gravity="left"属性,表示从左侧出现侧拉,可以根据需求修改属性值,宽度可以设置300dp吧,侧拉界面不要全部挡住主界面,侧拉界面内容可以根据需求任意发挥了。
2.代码中使用如下
(1)获得控件

   drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

(2)为控件设置监听

 drawerLayout.addDrawerListener(drawerListener);
        drawerLayout.setScrimColor(Color.TRANSPARENT);//去除侧滑时的阴影

(3)监听实现

 DrawerLayout.DrawerListener drawerListener = new DrawerLayout.DrawerListener() {
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            // 得到contentView 实现侧滑界面出现后主界面向右平移避免侧滑界面遮住主界面
            View content = drawerLayout.getChildAt(0);
            int offset = (int) (drawerView.getWidth() * slideOffset);
            content.setTranslationX(offset);
        }

        @Override
        public void onDrawerOpened(View drawerView) {
          //打开侧滑界面触发
        }

        @Override
        public void onDrawerClosed(View drawerView) {
//关闭侧滑界面触发
        }

        @Override
        public void onDrawerStateChanged(int newState) {
           //状态改变时触发
        }
    };

(4)点击按钮弹出侧滑界面实现

 celabtn = (ImageView) findViewById(R.id.cela);//侧拉菜单点击按钮
 celabtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                drawerLayout.openDrawer(Gravity.LEFT);

            }
        });

(5)手动关闭侧滑调用方法

   drawerLayout.openDrawer(Gravity.LEFT);
上一篇 下一篇

猜你喜欢

热点阅读