Haf*_*ari 31 android navigationview android-navigationview
我知道可以通过调用setCheckedItem()或返回true值来突出显示导航视图项目onNavigationItemSelected以将项目显示为所选项目,但是如何取消选中导航视图的选中项目?
ars*_*ent 52
这将取消选中项目:
int size = mNavigationView.getMenu().size();
for (int i = 0; i < size; i++) {
mNavigationView.getMenu().getItem(i).setCheckable(false);
}
Run Code Online (Sandbox Code Playgroud)
Joa*_*usa 31
我看到@arsent解决方案并尝试了一下,它确实会做你想要的,即取消选择所有项目......但是,我在以下场景中遇到了问题:
NavigationView#setCheckedItem)NavigationView#setCheckedItem)在这种情况下,第1项不会被标记为已选中.这是因为在内部导航视图跟踪在步骤1中先前选择的项目集,该项目在步骤2中没有变化,并且它只是跳过步骤3,因为先前选择的项目与我们现在选择的项目相同.
我的建议(和另一种解决方案)避免这种情况只是有一个虚拟的隐形物品,并且NavigationView#setCheckedItem只要你想取消全部选择就用它来选择那个项目,就像这样
<item
android:id="@+id/menu_none"
android:title=""
android:visible="false"/>
Run Code Online (Sandbox Code Playgroud)
要取消所有选择
mNavigationView.setCheckedItem(R.id.menu_none);
Run Code Online (Sandbox Code Playgroud)
Rah*_*hul 18
要取消选中所有MenuItems包含SubMenu您必须使用递归的项目 -
private void unCheckAllMenuItems(@NonNull final Menu menu) {
int size = menu.size();
for (int i = 0; i < size; i++) {
final MenuItem item = menu.getItem(i);
if(item.hasSubMenu()) {
// Un check sub menu items
unCheckAllMenuItems(item.getSubMenu());
} else {
item.setChecked(false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
调用以上方法取消选中所有项目,如下所示 -
unCheckAllMenuItems(navigationView.getMenu());
Run Code Online (Sandbox Code Playgroud)
只是让你的物品不可检查
<item
android:id="@+id/profile_item"
android:checkable="false"
android:title="@string/profile"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19817 次 |
| 最近记录: |