NavigationView的使用

来源:互联网 发布:win10电脑如何优化 编辑:程序博客网 时间:2024/06/01 10:49

简介:

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

@Overridepublic 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);





0 0