Menu Android支持:设计导航查看选中的菜单子项
我最近开始将我的android应用程序转换为使用最新的支持库support:design 在实现新的NavigationView时,我偶然发现了一个显示所选菜单项的问题 我的navdrawer\u menu.xmlMenu Android支持:设计导航查看选中的菜单子项,menu,navigation,menuitem,submenu,Menu,Navigation,Menuitem,Submenu,我最近开始将我的android应用程序转换为使用最新的支持库support:design 在实现新的NavigationView时,我偶然发现了一个显示所选菜单项的问题 我的navdrawer\u menu.xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item
<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>
如果我只在标签之间使用普通的菜单项,这将非常有效,但对于副标题来说效果不太好。单击子项不会将其设置为选中状态,直到我两次单击同一项,并且不会取消选中之前选中的任何项
结果是这样的:
我用这种非常有效的方法解决了这个反复出现的问题 我们必须简单地记住所选项目的id,在NavigationView上为菜单充电,然后再次选择该项目 为此,您需要采用类似于菜单抽屉的方式:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/section_1"
android:title="@string/section_title">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/item_1_section_1"
android:icon="@drawable/ic_icon"
android:title="@string/title"/>
<item
android:id="@+id/item_2_section_1"
android:icon="@drawable/ic_icon"
android:title="@string/title"/>
...
</group>
</menu>
</item>
...
<item
android:id="@+id/section_x"
android:title="@string/section_title">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/item_1_section_x"
android:icon="@drawable/ic_icon"
android:title="@string/title"/>
<item
android:id="@+id/item_2_section_x"
android:icon="@drawable/ic_icon"
android:title="@string/title"/>
...
</group>
</menu>
</item>
</menu>
每个项目都必须在一个组中,以便该组可以在用户选择时控制项目的视觉行为。试试看:
<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" />
<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>
</group>
</menu>
这很简单。
只需为每个项目添加android:checkable=“true”
例如
<item
android:id="@+id/navigation_item_home"
android:icon="@drawable/ic_home_black"
android:title="@string/navdrawer_item_home"
android:checkable="true" />
我建议采用@MichelFortes提供的解决方案,因为它解决了我在NavigationView中的子菜单项问题。这是我的代码,它是有效的
在这里,您选择的每个项目都将被选中并高亮显示!
再次感谢@MichelFortes;) 这似乎可以完成任务,但当我这样做时,它只会加载菜单的第一组。有什么想法吗?这是一个Android支持库错误:@约翰凡登贝格,如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
<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" />
<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>
</group>
</menu>
<item
android:id="@+id/navigation_item_home"
android:icon="@drawable/ic_home_black"
android:title="@string/navdrawer_item_home"
android:checkable="true" />
<group android:checkableBehavior="single">
<item
android:id="@+id/your_id_item"
android:icon="@drawable/your_icon_if_you_want"
android:title="@string/title_for_this_item" />
<!-- you can add here as many items as you want -->
</group>
<item
android:title="@string/submenu_title">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/submenu_item_id"
android:icon="@drawable/icon_if_exists"
android:title="@string/title_for_item" />
<!-- you can add here as many items as you want -->
</group>
</menu>
</item>