Używam nowego NavigationView
do tworzenia menu szuflady nawigacji z XML. Potrzebuję umieścić dzielnik między elementami menu sekcji, które przełączają się między sekcjami mojej aplikacji, a ustawieniami i pomocą znajdują się linki pomocy u dołu.Jak uzyskać dzielniki w menu NavigationView bez tytułów?
We wszystkich przykładach widziałem, widzę, w jaki sposób można to zrobić poprzez umieszczenie innego <menu>
ramach <item>
, ale <item>
wymaga mieć atrybut android:title
, więc najlepsze, co mogę zrobić, to tytuł pusty, pozostawia puste miejsce przed ustawieniami i pomaga uzyskać informację zwrotną.
<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>
Próbowałem różnych kombinacji <menu>
, <item>
i <group>
znaczników, ale nie znalazłem niczego, co będzie działać. Ten przykład ma problemu stosując ostatnią pozycję w poprzedniej grupie jako tytuł Grupa:
<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>
Tam po prostu musi być łatwy sposób to zrobić używając tylko opis menu XML. Google ma to samo zachowanie w ich Material design spec.
EDIT:
Kolejny blisko próba:
<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>
To nie pozostawia przestrzeń między przedmiotów powyżej i poniżej dzielnika, ale jest jeszcze przestrzeń na szczycie teraz. Również, android:checkableBehavior="single"
zachowuje się dziwnie. Przedmioty nie są wybierane przy pierwszym wybraniu, a elementy nie są odznaczane, gdy inne zostaną wybrane.
Sprawdź poniżej swoją odpowiedź, która działa idealnie dla Ciebie. [NaviagtionMenuList Divider] (http://stackoverflow.com/questions/30916946/android-navigationview-menu-group-divider/40259846#40259846) –
Powinieneś sprawdzić swoją odpowiedź, masz niezakończone tagi i nie działa –