Я использую новый NavigationView
, чтобы создать меню навигационного ящика из XML. Мне нужно разместить разделитель между пунктами меню раздела, которые переключаются между разделами моего приложения и настройками, а также помогают и поддерживают ссылки внизу.
Во всех примерах, которые я видел, я вижу, как это можно сделать, добавив еще один <menu>
в <item>
, но для <item>
требуется атрибут android:title
, поэтому лучше всего я могу do делает заголовок пустым, что оставляет пустое пространство перед настройками, а также помощь и обратную связь.
<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-меню. Google имеет такое поведение в своей спецификации дизайна материалов.
EDIT:
Еще одна попытка:
<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"
ведет себя странно. Элементы не выбираются, если они выбраны в первый раз, и элементы не выбраны, если другие становятся выбранными.