DrawerLayout側拉菜單控件的使用

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);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容