1. 程式人生 > >DrawerLayout側滑選單、Toolbar和沉浸式狀態列的使用

DrawerLayout側滑選單、Toolbar和沉浸式狀態列的使用

  最近在開發中需要用到側滑選單,以前使用的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,歡迎評論,歡迎指正