【问题标题】:No drawer view found with gravity LEFT error on Clicking menu items in drawerlayout在抽屉布局中单击菜单项时未找到带有重力 LEFT 错误的抽屉视图
【发布时间】:2021-06-10 16:48:32
【问题描述】:

每当我单击导航视图中的菜单项时,都不会出现重力 LEFT 的抽屉视图。我正在使用自定义应用栏。我正在使用 openDrawer 和 closeDrawer 函数。下面我粘贴代码请帮助我坚持一周。

property.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    tools:context=".views.enforcement.PropertyActivity">

    <include
        android:id="@+id/header"
        layout="@layout/property_header" />

    <androidx.drawerlayout.widget.DrawerLayout
        android:id="@+id/drawerLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:openDrawer="end">

        <fragment
            android:id="@+id/fragmentContainerView"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:navGraph="@navigation/property_nav" />


        <com.google.android.material.navigation.NavigationView
            android:id="@+id/navigationView"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            android:background="@color/white"
            app:itemBackground="@color/white"
            app:itemIconTint="@color/color_light_blue"
            app:itemTextColor="@color/color_light_blue"
            app:menu="@menu/drawer_menu" />
    </androidx.drawerlayout.widget.DrawerLayout>

</LinearLayout>

property.class

   private fun initView() {
        navController = findNavController(R.id.fragmentContainerView)
        mDrawerLayout =  findViewById<DrawerLayout>(R.id.drawerLayout)
        navigationView.setupWithNavController(navController)
            binding.header.menuIV.setOnClickListener {
            if (mDrawerLayout.isDrawerOpen(GravityCompat.END)) {
                    mDrawerLayout.closeDrawers()
            } else {
                mDrawerLayout.openDrawer(GravityCompat.END)
            }
        }

【问题讨论】:

  • 您是想让导航抽屉从左侧打开还是从右侧打开?
  • 从右边尝试
  • 让我知道它是否有效

标签: android uinavigationcontroller drawerlayout


【解决方案1】:

您需要明确地使用 closeDrawers(),因为它本质上是 Gravity.START,但您调用的是 Gravity.END。 而是调用:

if (mDrawerLayout.isDrawerOpen(GravityCompat.END)) {
    mDrawerLayout.closeDrawer(GravityCompat.END) 
}

【讨论】:

  • 不,它不起作用。每当我单击菜单项时都会发生错误。
  • @PrameshSingh 您需要发布 logcat 故障,我需要查看菜单和头 xml 文件的实现代码。
  • java.lang.IllegalArgumentException:在 androidx.drawerlayout.widget.DrawerLayout.closeDrawer(DrawerLayout.java:1865) 在 androidx.drawerlayout.widget.DrawerLayout.closeDrawer(DrawerLayout .java:1851) 在 androidx.drawerlayout.widget.DrawerLayout.close(DrawerLayout.java:1800) 在 androidx.navigation.ui.NavigationUI$3.onNavigationItemSelected(NavigationUI.java:457) 在 com.google.android.material.navigation .NavigationView$1.onMenuItemSelected(NavigationView.java:217)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
相关资源
最近更新 更多