安卓侧滑菜单DrawerLayout

原文地址:https://blog.csdn.net/jinmie0193/article/details/80728152



布局文件

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:id="@+id/drawerlayout_drawer">

   

   

   

        android:id="@+id/drawerlayout_main_layout"

        android:layout_width="match_parent"

        android:layout_height="match_parent">

       

            android:id="@+id/drawerlayout_mian_layout_text"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:gravity="center"

            android:text="这是主内容"

            android:textColor="@color/colorAccent"

            android:textSize="22sp" />

   

   

   

        android:id="@+id/drawerlayout_side_tv"

        android:layout_width="200dp"

        android:layout_height="match_parent"

        android:layout_gravity="left"

        android:background="@color/white"

        android:text="侧滑菜单"/>


其中:

DrawerLayout最好为界面的根布局,否则可能会出现触摸事件被屏蔽的问题;

主内容区的布局代码要放在侧滑菜单布局的前面, 因为 XML 顺序意味着按 z 序(层叠顺序)排序,并且抽屉式导航栏必须位于

内容顶部;

侧滑菜单部分的布局必须设置layout_gravity属性,表示侧滑菜单是在左边还是右边,而且如果不设置在打开关闭抽屉的时候会

报错,设置了layout_gravity="start/left"的视图才会被认为是侧滑菜单。

效果

3.官方推荐的是在做法是在toolbar左边添加一个导航按钮

更改界面为无actionbar:android:theme="@style/Theme.AppCompat.Light.NoActionBar"

xml布局文件的Relativelayout中内容替换为:

[cpp] view plaincopy

 

   

        android:id="@+id/drawerlayout_main_layout" 

        android:layout_width="match_parent" 

        android:layout_height="match_parent"> 

 

       

            android:id="@+id/drawer_layout_rl_toolbar" 

            android:layout_width="match_parent" 

            android:layout_height="?android:attr/actionBarSize" 

            android:background="@color/yellow" 

            app:title="主标题"> 

 

         

 

     

4.主界面实例化toolbar

Toolbar toolbar = (Toolbar) findViewById(R.id.drawer_layout_rl_toolbar);

传入toolbar,并传给actionbar

setSupportActionBar(toolbar);                  //传入ToolBar实例

ActionBar actionBar = getSupportActionBar();    //得到ActionBar实例

然后设置显示导航按钮

if (actionBar != null){

            //显示导航按钮

            actionBar.setDisplayHomeAsUpEnabled(true);

            //设置导航按钮图片

            actionBar.setHomeAsUpIndicator(R.drawable.design_menu);

        }

实例化drawerlayout

final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout_drawer);

5.设置导航按钮的监听事件,点击显示侧滑菜单

//设置toolbar的导航按钮监听事件

        toolbar.setNavigationOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                //显示侧滑菜单

                drawerLayout.openDrawer(GravityCompat.START);

            }

        });

或者

@Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()){

            case android.R.id.home:

                //显示侧滑菜单

                drawerLayout.openDrawer(GravityCompat.START);

                break;

        }

        return super.onOptionsItemSelected(item);

    }

你可能感兴趣的:(安卓侧滑菜单DrawerLayout)