2016-07-06 5 views
0

Das ist mein activity_main_drawer.xmlin einer Navigationsleiste in verschiedenen Menüs

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/nav_hasiera" 
      android:title="@string/nav_hasiera" /> 
     <item 
      android:id="@+id/nav_oharrak" 
      android:title="@string/nav_oharrak" /> 
     <item 
      android:id="@+id/nav_instalazioak" 

      android:title="@string/nav_instalazioak" /> 

     <item 
      android:id="@+id/nav_gustokoak" 
      android:title="@string/nav_gustokoak" /> 

    </group> 

    <item android:title="@string/filtrar_por"> 
     <menu> 
      <item 
       android:id="@+id/nav_lokalizazioa" 
       android:title="@string/nav_lokalizazio" /> 
      <item 
       android:id="@+id/nav_ekintzak" 
       android:title="@string/nav_ekintzak" /> 
      <item 
       android:id="@+id/nav_ordutegia" 
       android:title="@string/nav_ordutegia" /> 
     </menu> 
    </item> 

    <item android:title="@string/opciones"> 
     <menu> 

      <item 
       android:id="@+id/nav_hizkuntza" 

       android:title="@string/nav_hizkuntza" /> 
     </menu> 
    </item> 
</menu> 

Wenn ich wählen items von group Tag, die Hintergrundfarbe der Artikel ändert. Es ist okay.

Aber wenn ich items von Filtrar por... oder opciones wähle, ändert sich die Hintergrundfarbe nicht.

Ich habe this post und this aber nicht mein Problem

bearbeiten fix: Das ist mein activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/mainactivity_linearlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/donostiakirola_fondo_pantalla" 
    tools:context=".MainActivity"> 

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <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" 
     android:background="@color/colorPrimaryDark" 
     app:itemTextColor="@color/white" 
     app:menu="@menu/activity_main_drawer" /> 

</android.support.v4.widget.DrawerLayout> 
</LinearLayout> 
+0

bitte den Code zum Ändern der Farbe ebenfalls anzeigen? – Saini

+0

Jetzt schreibe ich keinen Code, um die Farbe zu ändern. Jetzt ist es der Standardstatus und wenn ich ein Element auswähle, ändert sich die Hintergrundfarbe in Grau. Ich habe meinen Beitrag bearbeitet – aldakur

Antwort

0

Die Lösung ist hinzuzufügen android:checkable = "wahr" zu den Artikeln Filtrar por... und opciones.

<?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_hasiera" 
      android:title="@string/nav_hasiera" /> 
     <item 
      android:id="@+id/nav_oharrak" 
      android:title="@string/nav_oharrak" /> 
     <item 
      android:id="@+id/nav_instalazioak" 

      android:title="@string/nav_instalazioak" /> 

     <item 
      android:id="@+id/nav_gustokoak" 
      android:title="@string/nav_gustokoak" /> 
    </group> 

    <item android:title="@string/filtrar_por"> 
     <menu> 
      <item 
       android:id="@+id/nav_lokalizazioa" 
       android:title="@string/nav_lokalizazio" 
       android:checkable="true"/> 
      <item 
       android:id="@+id/nav_ekintzak" 
       android:title="@string/nav_ekintzak" 
       android:checkable="true"/> 
      <item 
       android:id="@+id/nav_ordutegia" 
       android:title="@string/nav_ordutegia" 
       android:checkable="true"/> 
     </menu> 
    </item> 

    <item android:title="@string/opciones"> 
     <menu> 
      <item 
       android:id="@+id/nav_hizkuntza" 
       android:title="@string/nav_hizkuntza" 
       android:checkable="true"/> 
     </menu> 
    </item> 
</menu> 
0

In Ihrem res/Farbe Ordner, fügen Sie ein navigation_bg_color .xml Datei.

und fügen Sie den folgenden Code hinzu:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/defaultBgColor"/> <!-- default --> 
    <item android:color="@color/selectedBackgroundColor" android:state_selected="true" /> 
    <item android:color="@color/selectedBackgroundColor" android:state_checked="true" /> 
</selector> 

Und verwenden Sie den folgenden Code für activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/mainactivity_linearlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/donostiakirola_fondo_pantalla" 
    tools:context=".MainActivity"> 

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <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:itemTextColor="@color/white" 
     app:itemBackground="@color/navigation_bg_color" 
     app:menu="@menu/activity_main_drawer" /> 

</android.support.v4.widget.DrawerLayout> 
</LinearLayout> 

Und vergessen Sie nicht Farbwerte in den Farben zu erklären. xml Datei: defaultBgColor, selectedBackgroundColor

Verwandte Themen