簡介:
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);