2015-06-11 11 views
35

Ich benutze die neue NavigationView, um mein Navigationsmenü aus XML zu erstellen. Ich muss eine Trennlinie zwischen den Abschnitt Menüpunkte, die zwischen den Abschnitten meiner App und den Einstellungen und Hilfe & unterstützen Links im unteren Bereich.Wie erhalten Sie Teiler im NavigationView-Menü ohne Titel?

In allen Beispielen die ich gesehen habe, wie ich sehe, wie diese, indem sie eine andere <menu> innerhalb eines <item> getan werden kann, aber die <item> erfordert die android:title Attribut haben, so dass das Beste, was ich ist der Titel leer machen tun, was einen leeren Platz vor den Einstellungen und Hilfe & Rückmeldung lässt.

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

Ich habe verschiedene Kombinationen von <menu>, versucht <item> und <group> Etiketten haben aber nichts gefunden, das funktioniert. Dies hat zum Beispiel die Frage des das letzte Element in der vorherige Gruppe als Gruppentitel mit:

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

Es hat nur eine einfache Möglichkeit, dies nur das Menü XML-Beschreibung mit zu tun. Google hat genau dieses Verhalten in ihrem Material design spec.

Settings and support

EDIT:

Noch ein weiterer enger Versuch:

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

Dieser keinen Raum zwischen den Elementen oberhalb und unterhalb des Teilers verlässt, aber es gibt immer noch den Platz an der Spitze jetzt. Auch das android:checkableBehavior="single" verhält sich merkwürdig. Elemente werden nicht ausgewählt, wenn sie das erste Mal ausgewählt werden und Elemente werden nicht deaktiviert, wenn andere ausgewählt werden.

+0

Überprüfen Sie meine Antwort unten, die perfekt für Sie funktioniert. [NaviagtionMenuList Divider] (http://stackoverflow.com/questions/30916946/android-navigationview-menu-group-divider/40259846#40259846) –

+0

Sie sollten Ihre Antwort überprüfen, haben Sie unvollständige Tags und funktioniert nicht –

Antwort

98

Von: NavigationView: how to insert divider without subgroup?

Es sieht aus wie Sie gerade Ihre group Tags einzigartigen IDs müssen geben.

<group android:id="@+id/my_id"> 
    <!-- Divider will appear above this item --> 
    <item ... /> 
</group> 

Wie die Antwort sagt: Dies ist exakte Lösung für Ihre Frage hier

[NavigationView] wird ein Teiler jedes Mal, wenn die Gruppen-ID geändert wird

+8

Gut finden ! Konnte hier keine Frage bei meiner Suche finden. Hinzufügen von IDs zu den Gruppen hat den Trick gemacht. –

+0

Vielen Dank, @Kenny Worden !!!! –

+0

Aber ich denke, wir können nicht android: checkableBehavior = "single" 'gelten für Gruppen. Seufzer – user3175580

2

erstellen.

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <group 
     android:id="@+id/menu_top" 
     android:checkableBehavior="single"> 
     <item android:title="Switch Team"> 
      <menu> 
       <item 
        android:id="@+id/team" 
        android:title="" 
        app:actionLayout="@layout/layout_spinner_for_drawer"/> 
      </menu> 
     </item> 
    </group> 

    <group 
     android:id="@+id/menu_bottom" 
     android:checkableBehavior="single"> 
      <item 
       android:id="@+id/nav_home" 
       android:icon="@drawable/home" 
       android:title="Home" /> 
      <item 
       android:id="@+id/nav_share" 
       android:icon="@drawable/sharebox" 
       android:title="Sharebox" /> 
      <item 
       android:id="@+id/nav_recognize" 
       android:icon="@drawable/recognize" 
       android:title="Recognize" /> 
      <item 
       android:id="@+id/nav_contact_us" 
       android:icon="@drawable/contactus" 
       android:title="Contact Us" /> 
      <item 
       android:id="@+id/nav_logout" 
       android:icon="@drawable/signout" 
       android:title="Logout" /> 
    </group> 
</menu>