当我们添加部分时,如何在NavigationView的抽屉菜单中保持单一checkableBehavior模式?

lop*_*ael 19 android navigation-drawer material-design

我尝试使用新的材料设计组件实现抽屉:NavigationView.

它的工作非常好.当我选择一个项目时,它的颜色变化很好android:checkableBehavior="single".

<group
    android:checkableBehavior="single">

    <item
        android:id="@+id/drawer_home"
        android:checked="true"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/home"/>

    <item
        android:id="@+id/drawer_favourite"
        android:icon="@drawable/ic_favorite_black_24dp"
        android:title="@string/favourite"/>
    ...

    <item
        android:id="@+id/drawer_settings"
        android:icon="@drawable/ic_settings_black_24dp"
        android:title="@string/settings"/>

</group>
Run Code Online (Sandbox Code Playgroud)

当我尝试在抽屉中使用部分时出现问题.就是这种情况,我无法使用android:checkableBehavior="single",我在选择项目时失去了颜色变化.

<item
    android:id="@+id/section"
    android:title="@string/section_title">

    <menu>
        <item
            android:id="@+id/drawer_favourite"
            android:icon="@drawable/ic_favorite_black_24dp"
            android:title="@string/favourite"/>

        <item
            android:id="@+id/drawer_downloaded"
            android:icon="@drawable/ic_file_download_black_24dp"
            android:title="@string/downloaded"/>
    </menu>

</item>
Run Code Online (Sandbox Code Playgroud)

abi*_*net 8

试试这个:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">

        <item
            android:id="@+id/drawer_home"
            android:checked="true"
            android:icon="@drawable/ic_home_black_24dp"
            android:title="@string/home"/>

       <item
            android:id="@+id/drawer_favourite"
            android:icon="@drawable/ic_favorite_black_24dp"
            android:title="@string/favourite"/>
       ...

       <item
            android:id="@+id/drawer_settings"
            android:icon="@drawable/ic_settings_black_24dp"
            android:title="@string/settings"/>
       <item
            android:id="@+id/section"
            android:title="@string/section_title">

            <menu>
                <group android:checkableBehavior="single">
                    <item
                        android:id="@+id/drawer_favourite"
                        android:icon="@drawable/ic_favorite_black_24dp"
                        android:title="@string/favourite"/>

                    <item
                        android:id="@+id/drawer_downloaded"
                        android:icon="@drawable/ic_file_download_black_24dp"
                        android:title="@string/downloaded"/>
                </group>
            </menu>

       </item>

    </group>
</menu>
Run Code Online (Sandbox Code Playgroud)

您可以查看此解决方案以获取详细信息. 我无法将子菜单项设置为已选中


inf*_*oop 2

在修复 Fondesa 报告的错误之前,您可以使用以下解决方法:

菜单定义

<item android:checkable="true" ...>
Run Code Online (Sandbox Code Playgroud)

造型

<item android:state_selected="true" android:color="@color/error_color"/>
Run Code Online (Sandbox Code Playgroud)

当选择时,这将正确地显示菜单项。

请注意,这不会满足以下要求:

android:checkableBehavior="single"
Run Code Online (Sandbox Code Playgroud)

您必须手动处理该问题。