2015-10-29 6 views
27

Il modello di attività di navigazione cassetto nuovo default in Android StudioCambiare il colore della Navigazione Drawer Icon nel modello predefinito Studio Android

enter image description here

definisce i titoli e le icone in un file di menu activity_main_drawer come questo:

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_camara" 
     android:icon="@drawable/ic_action_emo_cool" 
     android:title="Import" /> 
    <item 
     android:id="@+id/nav_gallery" 
     android:icon="@android:drawable/ic_menu_gallery" 
     android:title="Gallery" /> 
    <item 
     android:id="@+id/nav_slideshow" 
     android:icon="@android:drawable/ic_menu_slideshow" 
     android:title="Slideshow" /> 
     ... 

La prima voce nel mio esempio utilizza un'icona rossa:

enter image description here

ma quando eseguo l'app, il colore dell'icona rimane nero. Ho provato questo per le icone blu, verde, giallo e viola, ma il risultato è lo stesso.

enter image description here

ho letto da qualche parte che la barra degli strumenti dovrebbe usare ThemeOverlay.AppCompat.Dark.ActionBar e la mia applicazione utilizza già questo nel file styles.xml:

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 
<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

Inizialmente ho pensato che questo avesse a che fare con Android Funzionalità cache di Studio quindi ho invalidato la cache e riavviato Android Studio senza fortuna.

+5

prova a 'app: itemIconTint =" @ android: color/blue "' alla tua 'navigazione View' –

+0

[http://stackoverflow.com/questions/30967851/change-navigation-view-item-color-dynamicly -android] (http://stackoverflow.com/questions/30967851/change-navigation-view-item-color-dynamicly-android) –

+0

Grazie a @MD. Era tutto ciò di cui avevo bisogno per aggiungere –

risposta

65

Sulla base di @ MD commento, tutto quello che dovevo fare era aggiungere:

app:itemIconTint="@color/my_desired_colour" 

a NavigationView (si trova in activity_main.xml file di layout) La tinta di default è il nero, ma si può usare una tonalità ancora più scura di nero utilizzando #000000

<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="#000000" 
    app:menu="@menu/activity_main_drawer" /> 
+0

grazie :) Come potrei fare per avere un set di tinte per tutte le icone tranne una. Per una particolare icona, voglio che la tinta sia impostata su null (cioè) una particolare icona della voce di menu appaia a colori in tutti gli stati – Rohan

+0

Benvenuto ... Ma non sono sicuro di come puoi ottenerlo. Spiacente –

+0

funziona per me . –

0

È necessario modificare il colorAccent nei colori file a cui mai colore che si desidera:

<color name="colorAccent">whichever color required</color> 

Questa soluzione ha funzionato per me

15

Creare un nuovo stile:

<style name="DrawerIconStyle" parent="Widget.AppCompat.DrawerArrowToggle"> 
    <item name="color">@android:color/red</item> 
</style> 

e n vostro tema:

<item name="drawerArrowStyle">@style/DrawerIconStyle</item> 
+1

Questo ha funzionato per me che qualsiasi altra soluzione – yashpandey

0

Sulla base di @ojonugwa ochalifu e @ il commento di MD,

È possibile ottenere scrivendo app:itemIconTint ma se si scrive questo, i cassetti di navigazione i anche il colore sarà cambiato. La soluzione semplice e facile che ho trovato dopo un sacco di R & D è che si deve definire <item name="colorControlNormal">#FFE730</item> in tema di AppBarLayout o se si utilizza Toolbar solo senza AppBarLayout, è possibile anche scrivere <item name="colorControlNormal">#FFE730</item> a tema o popupTheme di Toolbar in xml.

Questo cambierà anche il colore della freccia indietro dell'attività.

Spero che questo aiuti tutti voi che state affrontando questo tipo di problema.

Problemi correlati