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

Android 如何关闭底部应用程序栏的导航抽屉,android,navigation-drawer,android-bottomappbar,Android,Navigation Drawer,Android Bottomappbar,我在应用程序中使用底部应用程序栏作为导航组件。当单击导航抽屉的某个项目(从底部显示)时,导航抽屉应该关闭,但它不是。单击导航抽屉的导航项时,相关片段将打开,但导航抽屉(位于底部应用程序栏)仍会出现 我曾尝试使用DroperLayout和DroperLayout.closeDrawer(Gravity.LEFT),但不起作用 布局如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout

我在应用程序中使用底部应用程序栏作为导航组件。当单击导航抽屉的某个项目(从底部显示)时,导航抽屉应该关闭,但它不是。单击导航抽屉的导航项时,相关片段将打开,但导航抽屉(位于底部应用程序栏)仍会出现

我曾尝试使用DroperLayout和DroperLayout.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>
出现以下错误:

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" >

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


仍然给出相同的错误。。顺便说一下,为了添加android:layout\u gravity,我已经将Internal RelativeLayout更改为FrameLayout,但它不起作用。我想我必须使用HidebottMViewonScrollBehavior类的slideDown()方法,但该方法受到保护,所以我无法使用它。我真的不明白您的确切设置是什么,但是
中的抽屉必须是它的直接子项。将
移出内部
,并添加
布局,如kandroidj的回答所示。另外,最外层的
是无意义的,可以删除。
dismise()
?这是否在
底部表单对话框中?如果是这样,您根本不需要
。这是用于从左右两侧滑入的抽屉。事实上,如果是这样的话,您不需要问题中显示的大部分布局。您只需要
,就可以删除所有其他内容。您是对的。是的,这是一个片段。我加了一个是为了关闭它。因为dismise()可以处理它,所以我删除了除。非常感谢。
<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)
    navigation_view.setNavigationItemSelectedListener {

    ... 

    dismiss()

    ...

    return@setNavigationItemSelectedListener true

}