我正在使用材料设计BottomNavigationView组件和使用导航组件的片段转换。
我目前面临的问题是我无法移除/隐藏徽章。当我们使用导航组件时,我不能使用setOnNavigationItemSelectedListener
,setupWithNavController
所以当我点击 itemId 时,我如何知道我当前在哪个片段/itemId 上并删除该特定 itemId 的徽章
我正在使用材料设计BottomNavigationView组件和使用导航组件的片段转换。
我目前面临的问题是我无法移除/隐藏徽章。当我们使用导航组件时,我不能使用setOnNavigationItemSelectedListener
,setupWithNavController
所以当我点击 itemId 时,我如何知道我当前在哪个片段/itemId 上并删除该特定 itemId 的徽章
使用自定义NavigationItemSelectedListener
您正在删除原始侦听器。但是,您可以使用触发默认行为NavigationUI.onNavDestinationSelected(it, navController)
。
bottomNavigationView.setOnNavigationItemSelectedListener {
when (it.itemId) {
R.id.nav_xxxx -> {
// handle click
// .....
}
}
NavigationUI.onNavDestinationSelected(it, navController)
true
}
创建一个选择器 XML 以更改所选菜单项的图标。假设它被称为bottom_item_selector
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/unchecked_item_drawable" android:state_checked="false"/>
<item android:drawable="@drawable/checked_item_drawable" android:state_checked="true"/>
</selector>
然后在您的菜单 XML 中更改图标以使用此可绘制对象:
<item
android:id="@+id/.."
android:icon="@drawable/bottom_item_selector"
android:checkable="true"
android:title=""/>
这样您就不必添加侦听器并NavigationUI
显式调用。