DrawerLayout:
DrawerLayout是Support Library包中实现侧滑菜单的效果。主要分成两部分:侧滑菜单和主体内容,侧滑菜单可以通过手势展开与隐藏,主体内容可以随着菜单的点击而变化。
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_fm_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/tb"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#40B8EE">
</android.support.v7.widget.Toolbar>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/menu_main">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
需要注意两个问题:第一、主体内容的布局代码要放在侧滑菜单布局的前面,这样有助于DrawerLayout判断谁是侧滑菜单,谁是主内容。第二、侧滑菜单的部分布局可以设置layout_gravity属性,start表示左菜单,end表示右菜单。
NavigationView
NavigationView是导航抽屉,被设计应用于导航抽屉,提供了一种通用的导航方式,体现了设计的一致性。它提供的默认样式包括选中项高亮、分组单选、分组子标题,以及可选的header。
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
if (mOldItem != null)
mOldItem.setChecked(false);
switch (item.getItemId()) {
case R.id.menu_main_home:
Log.e(TAG, "----->>首页");
break;
case R.id.menu_main_my_home:
Log.e(TAG, "---->>个人首页");
break;
case R.id.menu_main_all_home:
Log.e(TAG, "---->>公共首页");
break;
case R.id.menu_main_info:
Log.e(TAG, "---->>个人信息");
break;
default:
break;
}
mOldItem = item;
item.setChecked(true);
mDrawerLayout.closeDrawers();
return true;
}
});
通过setNavigationItemSelectedListener()方法可以获得相应的点击事件