android – 如何得到分隔线在NavigationView菜单没有标题?

我使用新的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>

我尝试了< 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描述。谷歌在他们的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”行为奇怪。第一次选择项目时不选择项目,一旦选择其他项目,则不取消选择项目。

From:NavigationView insert divider without subgroup

看起来你只需要给你的组标签唯一的ID。

<group android:id="@+id/my_id">
    <!-- Divider will appear above this item -->
    <item ... />
</group>

答案如下:

[NavigationView] will create a divider every time the group id is changed

http://stackoverflow.com/questions/30790420/how-to-get-dividers-in-navigationview-menu-without-titles

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android – 如何得到分隔线在NavigationView菜单没有标题?