【问题标题】:BottomNavigationView clear selectionBottomNavigationView 清除选择
【发布时间】:2017-05-23 22:47:58
【问题描述】:

我想清除底部导航视图的选择,因此不会选择任何项目。

我有一个辅助实用方法:

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();

那没有用。 如何强制视图根据颜色选择器重置颜色值?

【问题讨论】:

    标签: java android bottomnavigationview


    【解决方案1】:

    通过使所有 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);
        }
    }
    

    【讨论】:

    • >> 在 for 循环中的所有菜单项上设置 isChecked = false 不是更容易吗?
    猜你喜欢
    • 2019-02-15
    • 2014-07-28
    • 2020-04-07
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多