0

アプリで Bottom App Bar をナビゲーション コンポーネントとして使用しています。Navigation Drawer (下から表示される) のアイテムをクリックすると、Navigation Drawer が閉じられるはずですが、閉じられません。Navigation Drawer のナビゲーション アイテムをクリックすると、関連するフラグメントが開かれますが、(Bottom App Bar の) Navigation Drawer は引き続き表示されます。

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:重力が左にある引き出しビューが見つかりません

以下のリンクで解決策を試しましたが、うまくいきませんでした。

Android DrawerLayout - 重力でドロワー ビューが見つかりません

4

2 に答える 2

1

重力を指定する必要があります。

<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)
于 2019-08-07T20:00:34.120 に答える