我有一个可用的抽屉导航并且在使用 menuItem.setChecked(true);
时遇到了一些问题在菜单中使用组和标题时。它没有按预期突出显示菜单项。
这是我的 XML:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ActivityMap">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_welcome"
android:icon="@drawable/abc_btn_check_to_on_mtrl_000"
android:title="Welcome" />
<item
android:id="@+id/nav_map_showmap"
android:icon="@mipmap/ic_map_black_24dp"
android:title="Show Map" />
<item
android:icon="@mipmap/ic_list_black_24dp"
android:title="Show List" />
<item android:title="Settings">
<menu>
<item
android:id="@+id/nav_database_check"
android:icon="@mipmap/ic_cloud_done_black_24dp"
android:title="Update Database" />
<item
android:id="@+id/nav_map_settings"
android:icon="@mipmap/ic_settings_black_24dp"
android:title="App Preferences" />
</menu>
</item>
<item android:title="General">
<menu>
<item
android:id="@+id/nav_general_about"
android:icon="@mipmap/ic_info_black_24dp"
android:title="About" />
<item
android:id="@+id/nav_general_help"
android:icon="@mipmap/ic_help_black_24dp"
android:title="Help" />
<item
android:id="@+id/nav_general_report"
android:icon="@mipmap/ic_email_black_24dp"
android:title="Feedback / Report error" />
</menu>
</item>
</group>
</menu>
如您所见,我有 3 个菜单项,然后是一个包含 2 个菜单项的设置组,然后是一个包含 3 个菜单项的常规组。
现在有了前 3 个菜单项,menuItem.setChecked(true);
正在按预期工作,并突出显示该菜单项。但是,子集(“设置”或“常规”子集)中的以下菜单项均未正确突出显示。
我读到 <group android:checkableBehaviour="single">
可以封装整个 block ,但这似乎不起作用。
有什么想法吗?干杯。
编辑 - 添加了菜单结构的屏幕截图
最佳答案
更新
如果您已将 Android Studio 升级到 1.4,您可以创建一个新项目(使用 Navigation Drawer Activity
模板)。然后,您可以按如下方式更新您的菜单文件(注意 “Communicate” 和 “BNK” 的 2 个子菜单中的两行 <group android:checkableBehavior="single">
):
<?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/nav_camara" android:icon="@android:drawable/ic_menu_camera"
android:title="Import" />
<item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery"
android:title="Gallery" />
<item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow"
android:title="Slideshow" />
<item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage"
android:title="Tools" />
</group>
<item android:title="Communicate">
<menu>
<group android:checkableBehavior="single">
<item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share"
android:title="Share" />
<item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send"
android:title="Send" />
</group>
</menu>
</item>
<item android:title="BNK">
<menu>
<group android:checkableBehavior="single">
<item android:id="@+id/nav_share_bnk" android:icon="@android:drawable/ic_menu_share"
android:title="Share BNK" />
<item android:id="@+id/nav_send_bnk" android:icon="@android:drawable/ic_menu_send"
android:title="Send BNK" />
</group>
</menu>
</item>
</menu>
这是截图
更新结束
正如我评论过的,请尝试输入 <group android:checkableBehavior="single">
在设置和常规菜单下方,而不是放在外部菜单下方。这意味着您将有 2 个组。希望这对您有所帮助!
关于java - 在不同组中选择的抽屉导航菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32695710/