一、首先添加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代码中调用如下方法:
- NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
- 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、头部事件监听:
- //获取头布局文件
- View headerView = navigationView.getHeaderView(0);
b、item点击事件
- navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
- @Override
- public boolean onNavigationItemSelected(MenuItem item) {
- //在这里处理item的点击事件
- return true;
- }
- });