如何关闭底部应用栏的导航抽屉



我正在使用应用程序中的底部应用栏作为导航组件。当单击导航抽屉项目(从底部显示(时,导航抽屉应该关闭,但事实并非如此。单击导航抽屉的导航项时,将打开相关片段,但仍会显示导航抽屉(底部应用栏(。

我尝试使用DrawerLayout和drawerLayout.closeDrawer(Gravity.LEFT(,但它不起作用。

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:id="@+id/drawerView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.drawerlayout.widget.DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawerLayout"
tools:openDrawer="left">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:headerLayout="@layout/nav_header_layout"
app:menu="@menu/bottom_nav_drawer_menu" >
</com.google.android.material.navigation.NavigationView>
</RelativeLayout>
</androidx.drawerlayout.widget.DrawerLayout>
</RelativeLayout>

下面是 IDE 给出错误的代码部分:

navigation_view.setNavigationItemSelectedListener {
drawerLayout.closeDrawer(Gravity.LEFT)
...
return@setNavigationItemSelectedListener true
}

出现以下错误:

java.lang.IllegalArgumentException: 找不到带有重力左的抽屉视图

我已经在下面的链接中尝试了解决方案,但它们不起作用:

安卓抽屉布局 - 在重力下找不到抽屉视图

您需要指定重力:

<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
app:headerLayout="@layout/nav_header_layout"
app:menu="@menu/bottom_nav_drawer_menu" >

此外,请考虑使用:

drawerLayout.closeDrawer(GravityCompat.LEFT)

我已经通过dismiss((函数而不是closeDrawer((解决了我的问题:

navigation_view.setNavigationItemSelectedListener {
... 
dismiss()
...
return@setNavigationItemSelectedListener true
}

相关内容

  • 没有找到相关文章

最新更新