我正在使用android设计支持库来创建抽屉布局。
在我的NavigationView
我有包含子菜单的菜单组。
这是我的菜单文件。
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_dashboard"
android:title="Home" />
<item
android:id="@+id/nav_messages"
android:icon="@drawable/ic_event"
android:title="Messages" />
<item
android:id="@+id/nav_friends"
android:icon="@drawable/ic_headset"
android:title="Friends" />
<item
android:id="@+id/nav_discussion"
android:icon="@drawable/ic_forum"
android:title="Discussion" />
<item android:title="Sub Menus">
<menu>
<item
android:id="@+id/sub_one"
android:icon="@drawable/ic_dashboard"
android:title="Sub item 1" />
<item
android:id="@+id/sub_two"
android:icon="@drawable/ic_forum"
android:title="Sub item 2" />
</menu>
</item>
</group>
我的项目单击侦听器
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
Log.d("Item Click : ", menuItem.getTitle().toString());
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
return true;
}
});
但是我的问题是只有前四个主菜单项被正确检查,而子菜单点击事件也可以,但它们不会被检查。相反,之前的主菜单仍会被选中。
答案 0 :(得分:4)
我有同样的问题,但只是注意到一个解决方案。它不漂亮但对我有用。
似乎看起来像checkableBehavior =“single”的单个组会进行交互,但他们会这样做。一次只检查一个项目,但我也使用两个菜单。看看这个:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<item android:title="title">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/navigation_item_1"
android:title="title"/>
<item
android:id="@+id/navigation_item_2"
android:title="title"/>
<item
android:id="@+id/navigation_item_3"
android:title="title"/>
</group>
</menu>
</item>
<item android:title="@string/title">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/navigation_sub_item_1"
android:title="title"/>
<item
android:id="@+id/navigation_sub_item_2"
android:title="title"/>
</group>
</menu>
</item>
</group>
但它不适用于默认的xml状态checked =“true”。在这种情况下,它不会取消选中此项目,但会检查单个可检查组中的第二个项目。 :d
答案 1 :(得分:1)
它将您的子项目作为一个项目,并尝试突出显示整个项目。您希望单个行为作为子项的组。见下文:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_dashboard"
android:title="Home" />
<item
android:id="@+id/nav_check"
android:icon="@drawable/ic_cloud_queue_black_24dp"
android:title="Check" />
</group>
<!-- Sub items -->
<item android:title="Other">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings_white_24dp"
android:title="settings" />
<item
android:icon="@drawable/ic_forum"
android:title="forum" />
</group>
</menu>
</item>