如何取消选中导航视图中的选中项目?

新手上路,请多包涵

我知道可以通过调用 setCheckedItem() 或在 onNavigationItemSelected 中返回真值来突出显示导航视图项,以将该项目显示为所选项目,但是如何取消选中 a 的选中项目导航视图?

原文由 Hafez Divandari 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 408
2 个回答

这将取消选中项目:

     int size = mNavigationView.getMenu().size();
    for (int i = 0; i < size; i++) {
        mNavigationView.getMenu().getItem(i).setCheckable(false);
    }

原文由 arsent 发布,翻译遵循 CC BY-SA 4.0 许可协议

我看到@arsent 解决方案并试了一下,它确实会做你想做的,即取消选择所有项目……但是,我在以下场景中遇到了问题:

  1. 选择菜单项 1(使用 NavigationView#setCheckedItem
  2. 根据@arsent 的解决方案取消选择所有项目
  3. 再次选择菜单项 1(使用 NavigationView#setCheckedItem

在这种情况下,项目 1 不会被标记为已选中。这是因为导航视图在内部跟踪在第 1 步中设置的先前选择的项目,这在第 2 步中不会更改,并且它只是跳过第 3 步,因为先前选择的项目与我们现在选择的项目相同。

我的建议(和替代解决方案)避免这种情况只是有一个虚拟的不可见项目并使用 NavigationView#setCheckedItem 在你想取消选择所有项目时选择该项目,就像这样

<item
    android:id="@+id/menu_none"
    android:title=""
    android:visible="false"/>

取消选择所有只是做

mNavigationView.setCheckedItem(R.id.menu_none);

原文由 Joao Sousa 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题