原文地址:https://blog.csdn.net/jinmie0193/article/details/80728152
布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawerlayout_drawer">
<!--DrawerLayout最好为界面的根布局-->
<!--主内容区的布局代码要放在侧滑菜单布局的前面,-->
<RelativeLayout
android:id="@+id/drawerlayout_main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
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" />
</RelativeLayout>
<!--必须设置layout_gravity属性,表示侧滑方向-->
<TextView
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="侧滑菜单"/>
</android.support.v4.widget.DrawerLayout>
其中:
DrawerLayout最好为界面的根布局,否则可能会出现触摸事件被屏蔽的问题;
主内容区的布局代码要放在侧滑菜单布局的前面, 因为 XML 顺序意味着按 z 序(层叠顺序)排序,并且抽屉式导航栏必须位于
内容顶部;
侧滑菜单部分的布局必须设置layout_gravity属性,表示侧滑菜单是在左边还是右边,而且如果不设置在打开关闭抽屉的时候会
报错,设置了layout_gravity="start/left"的视图才会被认为是侧滑菜单。
效果
3.官方推荐的是在做法是在toolbar左边添加一个导航按钮
更改界面为无actionbar:android:theme="@style/Theme.AppCompat.Light.NoActionBar"
xml布局文件的Relativelayout中内容替换为:
[cpp] view plaincopy
<code class="language-cpp"> <!--主内容区的布局代码要放在侧滑菜单布局的前面,-->
<RelativeLayout
android:id="@+id/drawerlayout_main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/drawer_layout_rl_toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@color/yellow"
app:title="主标题">
</android.support.v7.widget.Toolbar>
</RelativeLayout></code>
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);
}
网友评论