BottomNavigationView 清除选择
BottomNavigationView clear selection
我想清除 BottomNavigationView 的选择,这样就不会选择任何项目。
我有一个辅助工具方法:
public static void clearSelection(BottomNavigationView view) {
final BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
item.setChecked(false);
}
}
这种方法有效,但不会将项目的颜色重置为未选中的颜色(仅删除凸起的动画并使字体大小正常化)。
要设置 BottomVanigationItemView 颜色,我使用颜色选择器根据选中状态设置颜色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:color="@color/colorPrimaryLight" />
<item android:color="@color/colorPrimaryLightTransparent" />
</selector>
我试过:
item.invalidate();
menuView.invalidate();
那没有用。
如何强制视图根据颜色选择器重置颜色值?
通过使所有 MenuItems 不可检查然后在 NavigationItemSelected 上再次使它们可检查来解决。
public static void setCheckable(BottomNavigationView view, boolean checkable) {
final Menu menu = view.getMenu();
for(int i = 0; i < menu.size(); i++) {
menu.getItem(i).setCheckable(checkable);
}
}
我想清除 BottomNavigationView 的选择,这样就不会选择任何项目。
我有一个辅助工具方法:
public static void clearSelection(BottomNavigationView view) {
final BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
item.setChecked(false);
}
}
这种方法有效,但不会将项目的颜色重置为未选中的颜色(仅删除凸起的动画并使字体大小正常化)。
要设置 BottomVanigationItemView 颜色,我使用颜色选择器根据选中状态设置颜色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:color="@color/colorPrimaryLight" />
<item android:color="@color/colorPrimaryLightTransparent" />
</selector>
我试过:
item.invalidate();
menuView.invalidate();
那没有用。 如何强制视图根据颜色选择器重置颜色值?
通过使所有 MenuItems 不可检查然后在 NavigationItemSelected 上再次使它们可检查来解决。
public static void setCheckable(BottomNavigationView view, boolean checkable) {
final Menu menu = view.getMenu();
for(int i = 0; i < menu.size(); i++) {
menu.getItem(i).setCheckable(checkable);
}
}