【发布时间】:2015-06-11 20:06:05
【问题描述】:
我正在使用新的NavigationView 从 XML 创建我的抽屉式导航菜单。我需要在部分菜单项之间放置一个分隔符,用于在我的应用程序的部分之间切换,以及底部的设置和帮助和支持链接。
在我见过的所有示例中,我看到了如何通过在 <item> 中放置另一个 <menu> 来完成此操作,但 <item> 需要具有 android:title 属性,所以我可以做到最好要做的是将标题留空,在设置和帮助和反馈之前留下一个空白区域。
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_section_1"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_1"
android:checked="true" /> <!-- default selection -->
<item
android:id="@+id/nav_section_2"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_2" />
<item
android:id="@+id/nav_section_3"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_3" />
</group>
<item android:title="@null"> <!-- I don't want a title or space here! -->
<menu>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="@string/settings" />
<item
android:id="@+id/nav_help_feedback"
android:icon="@drawable/ic_help"
android:title="@string/help_feedback" />
</menu>
</item>
</menu>
我尝试了<menu>、<item> 和<group> 标签的各种组合,但没有找到任何可行的方法。例如,使用上一组中的最后一项作为组标题的问题:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_section_1"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_1"
android:checked="true" /> <!-- default selection -->
<item
android:id="@+id/nav_section_2"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_2" />
<item
android:id="@+id/nav_section_3"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_3" />
</group>
<group> <!-- This puts @string/section_3 as the group title! -->
<menu>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="@string/settings" />
<item
android:id="@+id/nav_help_feedback"
android:icon="@drawable/ic_help"
android:title="@string/help_feedback" />
</menu>
</item>
</menu>
只需使用菜单 XML 描述即可轻松完成此操作。 Google 在他们的Material design spec 中有这种行为。
编辑:
又一次近距离尝试:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="@null"> <!-- Still a space here though! -->
<menu>
<group android:checkableBehavior="single"> <!-- And this checkable behavior behaves strangely for some reason -->
<item
android:id="@+id/nav_section_1"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_1"
android:checked="true" /> <!-- default selection -->
<item
android:id="@+id/nav_section_2"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_2" />
<item
android:id="@+id/nav_section_3"
android:icon="@drawable/ic_dashboard"
android:title="@string/section_3" />
</group>
</menu>
</item>
<group> <!-- Finally, no space or title here! -->
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="@string/settings" />
<item
android:id="@+id/nav_help_feedback"
android:icon="@drawable/ic_help"
android:title="@string/help_feedback" />
</item>
</menu>
这在分隔线上方和下方的项目之间没有空间,但现在顶部仍然有空间。此外,android:checkableBehavior="single" 的行为也很奇怪。项目在第一次被选中时不会被选中,而在其他项目被选中后也不会被取消选中。
【问题讨论】:
-
在下面查看我的答案,它非常适合您。 NaviagtionMenuList Divider
-
你应该检查你的答案,你有未完成的标签并且不起作用
标签: android android-menu divider navigationview