最近在开发中需要用到侧滑菜单,以前使用的SlidingMenu,但似乎已经被Google淘汰了(过时了),于是乎使用了DrawerLayout来实现,既然是在项目使用的,那么Toolbar和沉浸式状态栏也是要配合使用的,这里做一下记录。
我们先来看一看效果,这里是用模拟器实现的,效果不太好,真机上没问题。
一、沉浸式状态栏其实挺简单的,网上也很多,为了兼容低版本的手机可以先通过判断版本再来设置,还有一些写好的工具类,一句话就可以实现了,这里使用的是style.xml来设置主题实现的。
< style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
< !-- Customize your theme here. -->
< item name="colorPrimary">@color/colorPrimary< /item>
< item name="colorPrimaryDark">@color/colorPrimaryDark< /item>
< item name="colorAccent">@color/colorAccent< /item>
< !--全应用都只允许竖屏-->
< item name="android:screenOrientation">portrait< /item>
< /style>
然后是colors.xml
< !--主题颜色-->
< color name="colorPrimary">#FF8A00< /color>
< color name="colorPrimaryDark">#FF8A00< /color>
< color name="colorAccent">#FF8A00< /color>
然后给应用设置上主题就可以了。
二、Toolbar
在xml中写上布局文件
< LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
< android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize">
< /android.support.v7.widget.Toolbar>
< /LinearLayout>
然后在代码中获取控件即可。
三、DrawerLayout
也是在xml写上布局,这里贴出完整布局:
< ?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:id="@+id/menu_dl"
android:layout_width="match_parent"
android:layout_height="match_parent">
< LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
< android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize">
< /android.support.v7.widget.Toolbar>
< /LinearLayout>
< android.support.design.widget.NavigationView
android:id="@+id/menu_nv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/layout_navigation"
app:menu="@menu/menu_user_center_navigation">
< /android.support.design.widget.NavigationView>
< /android.support.v4.widget.DrawerLayout>
下面给出DrawerLayout的主要监听事件:
/*
*为抽屉菜单设置Item点击监听事件
*/
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
//个人编辑
case R.id.nav_user_center_item:
// 改变item选中状态
item.setChecked(true);
Toast.makeText(MainActivity.this,"个人编辑",Toast.LENGTH_LONG).show();
break;
//密码修改
case R.id.nav_change_pwd_item:
// 改变item选中状态
item.setChecked(true);
Toast.makeText(MainActivity.this,"密码修改",Toast.LENGTH_LONG).show();
break;
//版本更新
case R.id.nav_version_update_item:
// 改变item选中状态
item.setChecked(true);
Toast.makeText(MainActivity.this,"版本更新",Toast.LENGTH_LONG).show();
break;
//关于
case R.id.nav_about_item:
// 改变item选中状态
item.setChecked(true);
Toast.makeText(MainActivity.this,"关于",Toast.LENGTH_LONG).show();
break;
//退出登录
case R.id.nav_quit_item:
// 改变item选中状态
item.setChecked(true);
Toast.makeText(MainActivity.this,"退出登录",Toast.LENGTH_LONG).show();
break;
}
//关闭抽屉菜单
mDrawerLayout.closeDrawers();
return false;
}
});
下面给出完整的demo下载地址:
http://download.youkuaiyun.com/detail/u014727709/9738851
转载自 :http://blog.youkuaiyun.com/u014727709/article/details/54574541
欢迎start,欢迎评论,欢迎指正