gpt4 book ai didi

android - 如何在 NavigationView 中的所有组之间设置共享的可检查行为?

转载 作者:IT老高 更新时间:2023-10-28 21:48:24 24 4
gpt4 key购买 nike

我创建了两个具有唯一 ID 的组(我需要一个分隔符),它们都将 checkableBehavior 设置为 single。这允许一次检查来自不同组的多个项目,而这正是我想要避免的。我希望在所有组中最多检查一项。

由于我还没有找到在 XML 中执行此操作的任何方法,因此我尝试在 onNavigationItemSelected 中实现一个简单的逻辑来取消选中上一个菜单项:

if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);

但是 setChecked(false) 方法对我从来没有用过 - 项目一直处于选中状态。

这是我的示例代码:

menu_navigation.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/nav_group_1"
android:checkableBehavior="single">
<item
android:id="@+id/nav_feed"
android:title="@string/feed"/>
<item
android:id="@+id/nav_people"
android:title="@string/people"/>
</group>
<group
android:id="@+id/nav_group_2"
android:checkableBehavior="single">
<item
android:id="@+id/nav_settings"
android:title="@string/settings"/>
<item
android:id="@+id/nav_help_feedback"
android:title="@string/help_feedback"/>
<item
android:id="@+id/nav_logout"
android:title="@string/logout"/>
</group>

NavigationItemSelectedListener:

 mUiNavigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);
//...
changeCurrentFragment(...);
return true;
}
});

我需要一个提示!谢谢。

最佳答案

这是解决方案。

第 1 步:删除

android:checkableBehavior="single"

来自两组。

第 2 步:将以下逻辑添加到监听器:

mUiNavigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setCheckable(true);
menuItem.setChecked(true);
if (mPreviousMenuItem != null) {
mPreviousMenuItem.setChecked(false);
}
mPreviousMenuItem = menuItem;
//...
changeCurrentFragment(...);
return true;
}
});

注意:您可以为 XML 中的每个项目设置 android:checkable="true",而不是调用 menuItem.setCheckable(true)

@Moinkhan 的解决方案应该也可以工作(感谢,赞成),但我不想在每次选择新位置时循环遍历菜单项。

关于android - 如何在 NavigationView 中的所有组之间设置共享的可检查行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30766919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com