2015-11-27 20 views
9

Gibt es eine Möglichkeit, die Item-Farbe des ausgewählten Elements
in der Navigationsleiste programmgesteuert zu ändern?
Ich bin in der Lage, die App zu verwenden: itemTextColor, aber das Problem ist, wenn ich dies verwendet,
das Kontrollkästchen im Menüpunkt wird nicht markiert.NavigationView (Farbe des ausgewählten Elements ändern)

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/nav_home" 
      android:icon="@drawable/ic_home_black_24dp" 
      android:title="Home" /> 
     <item 
      android:id="@+id/nav_search" 
      android:icon="@drawable/ic_search_black" 
      android:title="Search Location" /> 
     <item 
      android:id="@+id/nav_fav" 
      android:icon="@drawable/ic_favorite" 
      android:title="Favorites" /> 
     <item 
      android:id="@+id/nav_route" 
      android:icon="@drawable/ic_place" 
      android:title="Route" /> 

     <item 
      android:id="@+id/nav_recent" 
      android:icon="@drawable/ic_nav_route" 
      android:title="Recent Location" /> 
    </group> 

    <item android:title="Others"> 
     <menu> 
      <item 
       android:id="@+id/nav_settings" 
       android:checked="true" 
       android:checkable="true" 
       android:icon="@drawable/ic_settings" 
       android:title="Settings" /> 
      <item 
       android:id="@+id/nav_about" 
       android:icon="@android:drawable/ic_menu_send" 
       android:title="About" /> 
     </menu> 
    </item> 
</menu> 
+0

Warum Sie kein lineares Layout mit Textansichten oder Listenansicht innerhalb der Navigationsleiste verwenden, es wäre einfacher für Sie zu tun, was Sie wollen – Tony

+0

Nun. Das beantwortet meine Frage nicht. Sorry, aber ich möchte mit der NavigationView –

+1

bleiben vielleicht ist diese Antwort hilfreich für Sie http://stackoverflow.com/questions/30886453/change-the-color-of-a-checked-menu-item-in-a-navigation -drawer – Tony

Antwort

23

einen Selektor

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:drawable="@color/primary" android:state_checked="true" /> 
     <item android:drawable="@android:color/transparent" /> 
</selector> 

erstellen und

app:itemBackground="@drawable/nav_view_item_background" 

dann wird das ausgewählte Element markiert.

, wenn Sie wollen, dass die Textfarbe dann

Set für sie
app:itemTextColor="@drawable/nav_view_item_textcolor" 

und erstellen wie einen Selektor ändern

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:color="@android:color/white" android:state_checked="true" /> 
    <item android:color="@color/primary" /> 
</selector> 
+4

Dies funktionierte auch für mich, es ist erwähnenswert, dass die 'app: itemTextColor' auf die' VSG24

0

Hinweis: Yasoda Antwort nicht für mich gearbeitet, was wahr ist in die meisten Fälle.

Obwohl ich die state_checked ist True und geben Sie es eine Farbe, es scheint, dass das Element nie überprüft wird.

Für weitere Suche fand ich das Problem mit Menüeintrag passiert ist. Ich habe im Menüeintrag in der Menü-Datei den Check-Punkt nicht auf wahr gesetzt.

Dann muss ich ein Tag android:checkable=true zu ihm hinzufügen.

und es funktioniert wie Charme.

+0

Nein, nachdem Sie auf das Element geklickt haben, wurde es NIEMALS in die ursprüngliche Farbe zurückgesetzt. – iBEK

Verwandte Themen