android中使用NavigationView实现抽屉界面
实现这个抽屉界面效果需要用的控件 DrawerLayout ,NavigationView。
这边是使用 androidx来实现的。
在 build.gradle里面查看一下是否添加了androidx的依赖库
AndroidX完整的依赖库格式如下:
implementation 'androidx.appcompat:appcompat:1.0.2'
这里NavigationView需要添加这些依赖项,这个非常重要不然NavigationView会不能正常运行。这个是我踩过的坑,也找了好久的资料才解决的。
implementation 'androidx.navigation:navigation-fragment:2.3.2'
implementation 'androidx.navigation:navigation-ui:2.3.2'
kotlin是添加下面的(我没有用kotlin这里是顺手提一下,以防自己会用到!)
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.2'
到此配这部分的配置就完整,接下来看页面的XML代码:
<?xml version="1.0" encoding="utf-8"?> <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/drawer_layout" tools:context=".MainActivity"> <LinearLayout android:id="@+id/maincontainer" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical"></LinearLayout> <com.google.android.material.navigation.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="left" android:fitsSystemWindows="true" /> </androidx.drawerlayout.widget.DrawerLayout>
这样就可以手机里面测试抽屉效果了,注意手指在手机屏幕边缘从左向右滑动,就可以看到抽屉效果。
navigationView 常用的属性
layout_gravity="start | left |right" 设置侧滑从哪边划出。
app:headerLayout="@layout/header_layout" 设置头部文件
app:menu="@menu/item_menu" 在布局文件中加入点击菜单,需要对item添加点击事件,这时候需要用到 setNavigationItemSelectedListener 进行事件监听。
在这里注意:app:menu="@menu/item_menu" 中 menu文件夹跟Layout文件夹是同级目录
下篇介绍item_menu XML文件内容跟item点击事件的监听