Поддержка Android: дизайн NavigationView проверен, подпункты меню
Недавно я начал преобразовывать свое приложение для Android в новейшую библиотеку поддержки, называемую support: design.
При реализации нового NavigationView я столкнулся с проблемой отображения выбранных пунктов меню.
Мой navdrawer_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/navigation_item_home"
android:icon="@drawable/ic_home_black"
android:title="@string/navdrawer_item_home" />
</group>
<item
android:id="@+id/navigation_subheader"
android:title="@string/navdrawer_subheader_title1">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/navigation_sub_item1"
android:icon="@drawable/ic_home_black"
android:title="@string/navdrawer_sub_item1" />
</group>
</menu>
</item>
</menu>
Затем я установил пункт меню в свой onNavigationItemSelected:
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
menuItem.setChecked(true);
drawerLayout.closeDrawer(GravityCompat.START);
mDrawerActionHandler.postDelayed(new Runnable() {
@Override
public void run() {
displayView(menuItem.getItemId());
}
}, DRAWER_CLOSE_DELAY_MS);
return true;
}
Это прекрасно работает, если я использую только обычные пункты меню между тегами, но не очень хорошо работает для подзаголовков. При нажатии на подпункты не будет установлен флажок, пока я не нажму один и тот же элемент дважды, и он не снимает отметку с любого элемента, который был проверен ранее.
В конечном итоге это выглядит так: