【发布时间】:2021-11-07 13:46:30
【问题描述】:
在花了很多时间并没有找到合适的解决方案后,我决定向该服务寻求帮助。
我有一个the simplest application that implements Drawer 的例子。此示例仅包含没有任何实现的菜单项。在菜单项 Share 中,我添加了一个 Switch 和一个监听器:
main_nav.xml
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
app:actionViewClass="androidx.appcompat.widget.SwitchCompat"
android:title="@string/menu_share" />
MainActivity.kt
val menuItem = navigation_view.menu.findItem(R.id.nav_share)
val switch_id = menuItem.actionView as SwitchCompat
switch_id.isChecked = true
switch_id.setOnClickListener {
// TODO: empty scope
}
开关运行流畅,动画效果如下图:
但现在如果开关关闭,我需要关闭主菜单项:
switch_id.setOnClickListener {
navigation_view.menu.findItem(R.id.nav_home).isEnabled = switch_id.isChecked
}
添加此行后,我的 Switch 动画中断!
我花了两天时间解决了这个问题,最后还是无济于事。
我的问题: 2021 年带有 android 菜单的 WTF?为什么访问菜单项会破坏动画,我该如何解决?如果有任何帮助,我将不胜感激!
【问题讨论】:
-
您是否尝试过使用
setOnCheckedChangeListener并使用提供的布尔值而不是setOnClickListener?示例:switch_id.setOnCheckedChangedListener { _, isChecked -> navigation_view.menu.findItem(R.id.nav_home).isEnabled = isChecked } -
@Kilian 感谢您的回答,但不幸的是这种方法不起作用。
-
@Kilian 也许这与这些答案stackoverflow.com/a/57714721/4512868 和问题issuetracker.google.com/issues/37074309 有关,但我不确定
标签: android kotlin switch-statement material-design navigation-drawer