24

Nella mia app oggi ho icone che non hanno un solo colore, ma in alcuni casi due colori a seconda dello stato dei dati nella mia app. Ciò significa che non è possibile utilizzare il comportamento di colorazione predefinito in NavigationView.Disattiva icona colorStateList in NavigationView

Sembra che con il nuovo NavigationView, a meno che non ho specificare un ColorStateList per le mie icone utilizzate nella lista, un default ColorStateList sarà fatto per me, che usa il mio colorPrimary ecc definito nel mio tema.

Non c'è modo per me di forzare NavigationView a smettere di colorare le mie icone?

risposta

82

Non c'è modo per me di forzare NavigationView a smettere di colorare le mie icone ?

Ci sono sicuro. È possibile farlo a livello di programmazione utilizzando NavigationView.setItemIconTintList.

E lo si può fare nel proprio layout XML utilizzando l'attributo NavigationView.itemIconTint.

programmazione

yourNavigationView.setItemIconTintList(null); 

Da XML

<android.support.design.widget.NavigationView 
    ... 
    app:itemIconTint="@android:color/black" 
    ... /> 

Risultati

results

+5

L'impostazione a livello di codice era l'unico modo per farlo funzionare. Non so perché non l'ho provato. Ho provato a impostarlo su null nell'xml ma questo non ha fatto nulla. Comunque, grazie amico! – tskulbru

+0

È necessario fare riferimento a un colore quando lo si applica in XML. Ad esempio, '@android: color/black'. Ha a che fare con il modo in cui 'ColorStateList' è inizializzato in' NavigationView'. – adneal

+1

Sì, l'ho visto nelle fonti. Ma ancora non pensavo di farlo solo per codice .. :) – tskulbru