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