DrawerLayout側滑選單、Toolbar和沉浸式狀態列的使用
阿新 • • 發佈:2019-02-09
最近在開發中需要用到側滑選單,以前使用的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.csdn.net/detail/u014727709/9738851
轉載自 :http://blog.csdn.net/u014727709/article/details/54574541
歡迎start,歡迎評論,歡迎指正