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

时间:2019-08-07 19:42:18

标签: android navigation-drawer android-bottomappbar

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

我尝试使用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:找不到重力为LEFT的抽屉视图

我在下面的链接上尝试过解决方案,但是它们没有用:

Android DrawerLayout - No drawer view found with gravity

2 个答案:

答案 0 :(得分:0)

您需要指定重力:

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

答案 1 :(得分:0)

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

    navigation_view.setNavigationItemSelectedListener {

    ... 

    dismiss()

    ...

    return@setNavigationItemSelectedListener true

}