NavigationView的使用

簡介:

NavigationView是Google在Android5.0之後,推出的左側側拉菜單控件。

如何使用:

item佈局文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/gesturePassword"
        android:checkable="true"
        android:icon="@mipmap/ic_launcher"
        android:textSize="16sp"
        android:title="設置手勢密碼" />
    <group
        android:id="@+id/line1"
        android:checkableBehavior="none">
        <item
            android:id="@+id/help"
            android:checkable="true"
            android:icon="@mipmap/ic_launcher"
            android:textSize="16sp"
            android:title="幫助中心" />
        <item
            android:id="@+id/serialnumber"
            android:checkable="true"
            android:icon="@mipmap/ic_launcher"
            android:textSize="16sp"
            android:title="乾坤鎖序列號" />
    </group>
    <group
        android:id="@+id/line2"
        android:checkableBehavior="none">
        <item
            android:id="@+id/share"
            android:checkable="true"
            android:icon="@mipmap/ic_launcher"
            android:textSize="16sp"
            android:title="推薦給好友" />
        <item
            android:id="@+id/update"
            android:checkable="true"
            android:icon="@mipmap/ic_launcher"
            android:textSize="16sp"
            android:title="檢查更新" />
        <item
            android:id="@+id/feedback"
            android:checkable="true"
            android:icon="@mipmap/ic_launcher"
            android:textSize="16sp"
            android:title="反饋問題" />
        <item
            android:id="@+id/about"
            android:checkable="true"
            android:icon="@mipmap/ic_launcher"
            android:textSize="16sp"
            android:title="關於APP" />
    </group>
    <item
        android:id="@+id/Loginout"
        android:checkable="true"
        android:icon="@mipmap/ic_launcher"
        android:textSize="16sp"
        android:title="註銷手機" />
    <!-- <item
         android:id="@+id/score"
         android:checkable="true"
         android:icon="@mipmap/icon_grade"
         android:title="去評分"
         android:textSize="@dimen/base16dp"/>-->


</menu>

head佈局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:background="#9999cc"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="90dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:orientation="horizontal">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:gravity="center_vertical"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/iv_head"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:clickable="false"
                    android:enabled="true"
                    android:src="@mipmap/ic_launcher" />

                <TextView
                    android:id="@+id/tv_phonenumber"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:clickable="true"
                    android:enabled="true"
                    android:textColor="#111111"
                    android:textSize="18dp" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#888888"/>
</LinearLayout>

使用

<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/id_drawer_layout"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:layout_height="match_parent">

    <android.support.design.widget.NavigationView
        android:background="#ffffff"
        android:id="@+id/id_nv_menu"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:menu="@menu/menu_drawer_item"/>
</android.support.v4.widget.DrawerLayout>

代碼

mDrawerLayout = (DrawerLayout) findViewById(R.id.id_drawer_layout);
NavigationView mNavigationView = (NavigationView) findViewById(R.id.id_nv_menu);
mNavigationView.setNavigationItemSelectedListener(this);
View headerLayout = mNavigationView.inflateHeaderView(R.layout.menu_header_item);
TextView maskPhoneNmber = (TextView) headerLayout.findViewById(R.id.tv_phonenumber);
maskPhoneNmber.setText("13146236551");

實現

implements NavigationView.OnNavigationItemSelectedListener

@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
    mDrawerLayout.openDrawer(GravityCompat.START);
    String flag ;
    switch (menuItem.getItemId()) {
        case R.id.gesturePassword://手勢密碼
            flag = "手勢密碼";
            break;
        case R.id.help://幫助
            flag = "幫助";
            break;
        case R.id.feedback://反饋
            flag = "反饋";
            break;
        case R.id.about://關於
            flag = "關於";
            break;
        case R.id.serialnumber://乾坤鎖序列號
            flag = "乾坤鎖序列號";
            break;
        case R.id.update://檢查更新
            flag = "檢查更新";
            break;
        case R.id.share://分享
            flag = "分享";
            break;
        case R.id.Loginout://註銷
            flag = "註銷";
            break;
        default:
            flag = "未知";
            break;
    }
    UIThreadUtil.showToast(MainActivity.this,flag);
    menuItem.setCheckable(false);
    mDrawerLayout.closeDrawers();
    return true;
}

問題解決:

1.側拉欄icon和文字間距太小

<dimen name="design_navigation_icon_padding">5dp</dimen>

2.點擊item鬆開後,不釋放選中狀態

menuItem.setCheckable(false);

3.icon過大

摳圖時多加些透明邊距

4.icon顏色加重了

mNavigationView.setItemIconTintList(null);





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章