Подтвердить что ты не робот

Как сохранить режим single checkableBehavior в меню ящика для NavigationView, когда мы добавим раздел?

Я пытаюсь реализовать ящик с новым компонентом материального дизайна: 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>

Проблема возникает, когда я пытаюсь использовать раздел в ящике. В этом случае я не могу использовать 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>
4b9b3361

Ответ 1

попробуйте следующее:

<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>

вы можете проверить это решение для деталей.. Я не могу установить элемент подменю как отмеченный

Ответ 2

В качестве обходного пути до тех пор, пока ошибка Fondesa не будет исправлена, вы можете использовать это:

Определение меню

<item android:checkable="true" ...>

Стайлинг

<item android:state_selected="true" android:color="@color/error_color"/>

В этом случае элемент меню будет правильно выбран.

Обратите внимание, что это не будет отвечать требованиям:

android:checkableBehavior="single"

Вам придется обрабатывать это вручную.