NavigationView 项目不检查
NavigationView items not checking
在我的 NavigationView
中,我将我的大部分项目分成带有子标题的部分。我通过将 menu
放在 item
:
中来实现这一点
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/drawer_top"
android:title="@string/top"/>
<item
android:id="@+id/drawer_header"
android:title="@string/header1">
<menu>
<item
android:id="@+id/drawer_item1"
android:title="@string/item1"/>
<item
android:id="@+id/drawer_item2"
android:title="@string/item2"/>
</menu>
</item>
</group>
</menu>
但是,这会导致第一项 drawer_top
永远被检查。其他项目不可勾选。我的 onNavigationItemSelected
-代码如下所示:
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
menuItem.setChecked(true);
... (navigate)
return true;
}
子菜单似乎无法检查by design。
这是一个workaround:
mNavigationView.getMenu().clear();
mNavigationView.inflateMenu(R.menu.menu_drawer);
mNavigationView.getMenu().findItem(mNavItemId).setChecked(true);
在我的 NavigationView
中,我将我的大部分项目分成带有子标题的部分。我通过将 menu
放在 item
:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/drawer_top"
android:title="@string/top"/>
<item
android:id="@+id/drawer_header"
android:title="@string/header1">
<menu>
<item
android:id="@+id/drawer_item1"
android:title="@string/item1"/>
<item
android:id="@+id/drawer_item2"
android:title="@string/item2"/>
</menu>
</item>
</group>
</menu>
但是,这会导致第一项 drawer_top
永远被检查。其他项目不可勾选。我的 onNavigationItemSelected
-代码如下所示:
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
menuItem.setChecked(true);
... (navigate)
return true;
}
子菜单似乎无法检查by design。
这是一个workaround:
mNavigationView.getMenu().clear();
mNavigationView.inflateMenu(R.menu.menu_drawer);
mNavigationView.getMenu().findItem(mNavItemId).setChecked(true);