如何在新的NavigationView中创建一个简单的分割线?

166

Google在Design Support Library版本22.2.0中引入了NavigationView,您可以使用菜单资源非常轻松地创建抽屉。

我如何在两个项目之间创建一个简单的分隔线? 将项目分组无效。 创建子项部分会创建分隔线,但需要标题,而我不想要标题。

任何帮助都将不胜感激。


如评论所述,已接受的答案存在问题,即可选行为在多个(并行)组之间无法工作。 为避免这种情况,请不要创建并行组,而是使用子菜单或子组来获取您的分隔符,如我在此回答中所述:https://dev59.com/t10a5IYBdhLWcg3wD08e#33877051 - Till - Appviewer.io
14个回答

0
尼莱的答案是正确的,只是有一个双重检查的缺陷。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single" android:id="@+id/grp1">
        <item
            android:id="@+id/nav_register_customer"
            android:icon="@drawable/ic_menu_camera"
            android:checkableBehavior="none"
            android:title="Register Customer" />
    </group>
    <group  android:id="@+id/grp2"
        android:checkableBehavior="single"  >
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/ic_menu_slideshow"
            android:checkableBehavior="none"
            android:title="Slideshow" />
    </group>
</menu>

因此,使用以下代码:

android:checkableBehavior="single"

并给它一个唯一的ID即可解决问题。


0

除了之前的答案,如果您想要装饰性分隔符但又不想因为“可选行为”问题创建多个组 - 您可以将相同的组ID分配给所有组。

例如:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
    android:id="@+id/group_nav_common" <!-- New group id-->
    android:checkableBehavior="single">

    <item
        android:id="@+id/menu_item_nav_home"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/nav_menu_main" />
    <item
        android:id="@+id/menu_item_nav_articles"
        android:icon="@drawable/ic_art_track_black_24dp"
        android:title="@string/latest_news" />

    <item
        android:id="@+id/menu_item_nav_group_categories"
        android:title="@string/nav_menu_sections">
        <menu>
            <group
                android:id="@id/group_nav_common" <!-- Existing group id -->
                android:checkableBehavior="single">
                <!-- Programmatically populated section -->
            </group>
        </menu>
    </item>

    <item
        android:id="@+id/menu_item_nav_group_sites"
        android:title="@string/nav_menu_sites">
        <menu>
            <group
                android:id="@id/group_nav_common" <!-- Existing group id -->
                android:checkableBehavior="single">
                <item
                    android:id="@+id/menu_item_nav_select_site"
                    android:icon="@drawable/ic_account_balance_black_24dp"
                    android:title="@string/nav_menu_select_site" />
            </group>
        </menu>
    </item>
</group>


0
如果所选答案对您无效,您可以尝试将以下内容添加到onCreateOptionsMenu中,以便为唯一的组ID提供支持:
if (Build.VERSION.SDK_INT >= 28) {
    menu.setGroupDividerEnabled(true)
}

0
如果您想要动态添加分隔符,只需像这样添加一个空的子菜单即可:
Menu menu = navigationView.getMenu();
menu.addSubMenu(" ").add(" ");

这将添加一个分隔符。

使用menu.getItem(int index)时,请确保传递正确的索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接