android - 在抽屉布局中单击菜单项时未找到带有重力 LEFT 错误的抽屉视图
问题描述
每当我单击导航视图中的菜单项时,都不会出现带有重力 LEFT 的抽屉视图。我正在使用自定义应用栏。我正在使用 openDrawer 和 closeDrawer 函数。下面我粘贴代码请帮助我坚持一周。
属性.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>
属性类
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)
}
}
解决方案
您需要明确地使用 closeDrawers(),因为它本质上是 Gravity.START 但您正在调用 Gravity.END。而是调用:
if (mDrawerLayout.isDrawerOpen(GravityCompat.END)) {
mDrawerLayout.closeDrawer(GravityCompat.END)
}
推荐阅读
- python - 为 arm + 嵌入式 linux 交叉编译 python 3.6
- google-sheets - 具有过滤列的数据透视表
- typescript - TypeScript 中具有条件类型返回类型的函数的最小实现
- python - Serial.read() 未正确解码
- c# - Azure RelayManagementClient 的 ManagedIdentityCredential
- javascript - 确定是否检查了自定义无线电组件
- laravel - Laravel 日期验证不适用于 before_or_equal 或 after_or_equal
- c++ - 如何编写nodejs ffi napi库函数以从哪个双数组调用.dll?
- python - bigquery 的数据框结果为空
- r - R, tbl_summary 使用 gtsummary 编织成 PDF