什么是DrawerLayout
DrawerLayout 是一种抽屉式导航栏,简单的说就是一种侧滑控件,比如网易云音乐的侧滑就是DrawerLayout 做的。它不仅节省了屏幕控件,也实现了非常好的动画效果。
简单使用
布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/tool_bar_layout"/>
</FrameLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity = "start"
android:text="this is drawer"
android:background="#fff"
/>
</android.support.v4.widget.DrawerLayout>
这里ToolBar 必须用FrameLayout 包裹起来,否则不会放在顶部。
必须指定TextView 的
android:layout_gravity = "start"
属性,已确定左滑还是右滑(根据系统语言判断)。
代码设置导航按钮
1,系统:
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.app_name, R.string.app_name);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
这个导航按钮是系统定制的。
滑动后。
2,自定义导航按钮
首先设置ToolBar
Toolbar toolbar = (Toolbar)findViewById(R.id.tool_bar);
toolbar.setTitle("滑动菜单");
通过ActionBar 设置图标:
ActionBar actionBar = getSupportActionBar();
if(actionBar != null)
{
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.mipmap.ic_launcher);
}
设置监听事件,点击滑动:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
break;
}
return super.onOptionsItemSelected(item);
}
如图: