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点击事件的监听

 navigationView侧滑菜单menu中item设置

 

posted @ 2022-04-18 23:32  星锋  阅读(377)  评论(0编辑  收藏  举报