Android NavigationView的使用

一、首先添加desigin依赖

compile 'com.android.support:design:25.2.0'//在app的builder gradle

2.在activity_main添加布局

<?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:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="主页面"/>
    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/header_layout"
        app:itemIconTint="@color/colorAccent"
        app:menu="@menu/main">

    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

3.在上面的布局中我引入了头布局和menu布局

 app:headerLayout="@layout/header_layout"
 app:menu="@menu/main">

4.在res 中创建menu文件夹,然后创建main.xml文件 (布局内容如下)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:id="@+id/g1">
        <item
            android:id="@+id/favorite"
            android:icon="@mipmap/ic_launcher"
            android:title="收藏" />
        <item
            android:id="@+id/wallet"
            android:icon="@mipmap/ic_launcher"
            android:title="钱包" />
    </group>

    <group android:id="@+id/g2">
        <item
            android:id="@+id/photo"
            android:icon="@mipmap/ic_launcher"
            android:title="相册" />
    </group>
    <item
        android:id="@+id/file"
        android:icon="@mipmap/ic_launcher"
        android:title="文件" />
</menu>

5.在res /layout中创建header_layout.xml布局(内容如下

<?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="200dp"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:scaleType="centerCrop"
        android:layout_gravity="center"
        android:src="@mipmap/ic_launcher"/>
</LinearLayout>

好了,运行下是不是大功告成了呢?

知识点:

1.android:layout_gravity="left"属性表示该View是左边的滑出菜单,这个属性的含义不用多说,这是DrawerLayout使用方式中的知识点。

2.有一个问题,图片都变为灰色了,怎么破?有两种方式:

a、在布局文件中添加app:itemIconTint="@color/blue"属性,表示设置图片的颜色全都为蓝色。

b、第一种解决方案会让所有的图片以一种颜色来显示,如果我想让图片就是显示他本身的颜色该怎么办呢?在Java代码中调用如下方法:

  1. NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);  
  2.         navigationView.setItemIconTintList(null); 

3、还有下面两个常用的API:

a.app:itemBackground="@color/colorAccent"设置每一个item的背景颜色

b.app:itemTextColor=""设置item的背景颜色

4、想在NavigationView的item之间添加上一条分隔线呢?很简单,只需要在menu中将相应的item放到一个group中,并给该group取一个id即可

5、怎么处理NavigationView中的事件监听

一、NavigationView中的事件处理主要是两个方面,一个头部的点击事件,还有一个是itemView的点击事件,下面我们分别来看看:

a、头部事件监听:

  1. //获取头布局文件  
  2.         View headerView = navigationView.getHeaderView(0);  

b、item点击事件

  1. navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {  
  2.     @Override  
  3.     public boolean onNavigationItemSelected(MenuItem item) {  
  4.         //在这里处理item的点击事件  
  5.         return true;  
  6.     }  
  7. });  
好了到这里就和大家说再见啦!还有什么需要补充的可以留言哦,一起学习进步。

猜你喜欢

转载自blog.csdn.net/qq_16479139/article/details/80093256
今日推荐