2

Ich habe eine Navigationsansicht, die ich entsprechend der Antwort, die ich von einer API-Anfrage erhalte, dynamisch bevölkere. Also muss ich die meisten Menüpunkte programmatisch gestalten.NavigationView MenuItems Holo-Indikator programmgesteuert anzeigen

Mein Ziel ist es, die Anzeige (gelb vertikale Streifen) in der linken Seite hinzufügen, wenn ein Menüpunkt markiert ist, wie in diesem Bild:

enter image description here

Hier ist mein Code bisher:

.xml

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:itemIconTint="@drawable/drawer_item" 
    app:itemTextColor="@drawable/drawer_item" 
    app:itemBackground="@drawable/background_item"/> 

.java-

for (SettingsMenuItem item : items) { 

       if (!item.getMenu().isEmpty()) { 

         span = new SpannableString(subItem.getTitle()); 
         span.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), 0, span.length(), 0); 

         menu.add(NONE,NONE, items.indexOf(subItem), span).setCheckable(true).setChecked(false);; 
        } 
} 
     menu.getItem(selectedItemID).setChecked(true); 

Antwort

1

Versuchen benutzerdefinierte Ansicht für gelb vertikale Streifen wie

<View 
    android:layout_width="5dp" 
    android:layout_height="match_parent" 
    android:background="@color/yellow"/> 

und setzen die Schwerkraft zu Mutter links zu schaffen. Pflegen Sie auch den Status des angeklickten Menüs irgendwo in SharedPreference, um den Zustand des angeklickten Menüs wiederherzustellen.

+0

Danke für Ihren Beitrag. Wie kann ich diese Ansicht programmatisch zum Menüeintrag hinzufügen? und wie setzt man die Schwerkraft nach links? – M20

+1

Ich würde vorschlagen, anstelle von SettingsMenuItem erstellen Sie Ihre benutzerdefinierte Schublade Layout, da es mehrere Dinge in dem Screenshot, die Sie erwähnt haben. Um Ihr benutzerdefiniertes Schubladenlayout zu erstellen, entfernen Sie NavigationView vollständig und erstellen Sie das oben genannte Layout, das im Screenshot erwähnt wird, und initialisieren Sie die Steuerelemente im Code dahinter. Hoffe, das ist klar. Wenn nicht, lass mich wissen, dass ich dann ein Code-Snippet posten werde –

Verwandte Themen