Jef*_*art 38 android divider android-menu navigationview
我正在使用new NavigationView
从XML创建我的导航抽屉菜单.我需要在部分菜单项之间放置一个分隔符,它在我的应用程序各部分之间切换,以及底部的设置和帮助和支持链接.
在我看过的所有例子中,我看到如何通过将另一个放入<menu>
一个<item>
,但<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>
Run Code Online (Sandbox Code Playgroud)
我已经试过的各种组合<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>
Run Code Online (Sandbox Code Playgroud)
只需使用菜单XML描述就可以轻松实现此目的.谷歌在他们的材料设计规范中有这种行为.
编辑:
又一次近距离尝试:
<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>
Run Code Online (Sandbox Code Playgroud)
这样在分隔线上方和下方的物品之间不留空间,但现在顶部仍有空间.而且,android:checkableBehavior="single"
表现得很奇怪.第一次选择时未选择项目,一旦选择了其他项目,则不会取消选择项目.
Ken*_*den 110
来自:NavigationView:如何插入没有子组的分隔符?
看起来你只需要为你的group
标签提供唯一的ID.
<group android:id="@+id/my_id">
<!-- Divider will appear above this item -->
<item ... />
</group>
Run Code Online (Sandbox Code Playgroud)
正如答案所说:
每次更改组ID时,[NavigationView]都会创建一个分隔符
小智 5
这是您的问题的确切解决方案。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group
android:id="@+id/menu_top"
android:checkableBehavior="single">
<item android:title="Switch Team">
<menu>
<item
android:id="@+id/team"
android:title=""
app:actionLayout="@layout/layout_spinner_for_drawer"/>
</menu>
</item>
</group>
<group
android:id="@+id/menu_bottom"
android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/home"
android:title="Home" />
<item
android:id="@+id/nav_share"
android:icon="@drawable/sharebox"
android:title="Sharebox" />
<item
android:id="@+id/nav_recognize"
android:icon="@drawable/recognize"
android:title="Recognize" />
<item
android:id="@+id/nav_contact_us"
android:icon="@drawable/contactus"
android:title="Contact Us" />
<item
android:id="@+id/nav_logout"
android:icon="@drawable/signout"
android:title="Logout" />
</group>
</menu>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21196 次 |
最近记录: |