首先点击切换按钮不起作用,但在可绘制对象打开后是
First click on toggle button not work, but after drawable opened yes
我需要帮助。
当我想打开 DrawableLayout 时,我第一次按下切换按钮时它没有响应。
在我通过滑动打开 DrawableLayout 并将其关闭后,切换开始正常工作。
这是问题的 Youtube link 和一些代码段。
kotlin 的片段class
//region Drawable layout
private fun initDrawableLayout() {
setUpNavigationView()
setToolbar()
setToggleActionBar()
}
private fun setUpNavigationView() {
binding.mainNavView.bringToFront()
binding.mainNavView.setNavigationItemSelectedListener(this)
}
private fun setToggleActionBar() {
var toggle = ActionBarDrawerToggle(
this,
binding.mainDrawerLayout,
binding.mainToolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
)
binding.mainDrawerLayout.addDrawerListener(toggle)
toggle.syncState()
}
private fun setToolbar() {
binding.toolbarTitleTv.text = getString(R.string.home)
}
xml 文件的片段
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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/main_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/main_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/toolbar_title_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Home" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/top_navigation_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_corners"
app:itemIconTint="@color/navigation_icons_color"
app:itemTextColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_toolbar"
app:menu="@menu/navigation_menu" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/main_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:visibility="gone"
app:headerLayout="@layout/header"
app:menu="@menu/drawable_menu" />
</androidx.drawerlayout.widget.DrawerLayout>
在我的例子中,我需要从 xml 文件中的 NavigationView 中删除 visibility = gone。
也许它会对某人有所帮助。
<com.google.android.material.navigation.NavigationView
android:id="@+id/main_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:visibility="gone"
app:headerLayout="@layout/header"
app:menu="@menu/drawable_menu" />
我需要帮助。 当我想打开 DrawableLayout 时,我第一次按下切换按钮时它没有响应。 在我通过滑动打开 DrawableLayout 并将其关闭后,切换开始正常工作。 这是问题的 Youtube link 和一些代码段。
kotlin 的片段class
//region Drawable layout
private fun initDrawableLayout() {
setUpNavigationView()
setToolbar()
setToggleActionBar()
}
private fun setUpNavigationView() {
binding.mainNavView.bringToFront()
binding.mainNavView.setNavigationItemSelectedListener(this)
}
private fun setToggleActionBar() {
var toggle = ActionBarDrawerToggle(
this,
binding.mainDrawerLayout,
binding.mainToolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
)
binding.mainDrawerLayout.addDrawerListener(toggle)
toggle.syncState()
}
private fun setToolbar() {
binding.toolbarTitleTv.text = getString(R.string.home)
}
xml 文件的片段
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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/main_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/main_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/toolbar_title_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Home" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/top_navigation_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_corners"
app:itemIconTint="@color/navigation_icons_color"
app:itemTextColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_toolbar"
app:menu="@menu/navigation_menu" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/main_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:visibility="gone"
app:headerLayout="@layout/header"
app:menu="@menu/drawable_menu" />
</androidx.drawerlayout.widget.DrawerLayout>
在我的例子中,我需要从 xml 文件中的 NavigationView 中删除 visibility = gone。 也许它会对某人有所帮助。
<com.google.android.material.navigation.NavigationView
android:id="@+id/main_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:visibility="gone"
app:headerLayout="@layout/header"
app:menu="@menu/drawable_menu" />