2015-09-07 17 views
9

Desidero mantenere alcune icone non colorate e alcune tinte. Ora ho:Come impostare Tint in NavigationView su alcune icone

app:itemIconTint="@color/menu_icons_selector" 

Si tinge tutte le icone.

che sto cercando di fare tutte le icone non tinteggiati

mNavigationView.setItemIconTintList(null); 

e poi

mNavigationView.getMenu().getItem(4).getIcon().setColorFilter(redColor, PorterDuff.Mode.SRC_ATOP); 

per impostare la tinta solo al 4 elemento, ma questo non funziona - tutte le icone non sono ora oscurati, e 4 anche non colorato.

+0

vedo solo si utilizza già 'setColorFilter'. In tal caso la mia risposta probabilmente non ti aiuterà molto se non funziona (ma puoi lasciarlo per riferimenti futuri). Prova a rimuovere 'app: itemIconTint' e' setItemIconTintList'. Questo dovrebbe funzionare credo. Assicurati anche che sia effettivamente chiamato. Il mio funziona su onPostCreate(). – miva2

risposta

5

Questo sta lavorando per me .... In questo modo è possibile colorare individuale Navigazione MenuItem Icona Colore programmazione

navigation.getMenu().findItem(R.id.navItem1).getIcon().setColorFilter(Color.RED,PorterDuff.Mode.SRC_IN); 
+0

Grazie questo è quello che stavo cercando. – Sloosh

0

Si può "avvolgere" l'icona come un disegnabile (res/drawable) e applicare la tinta applicabile

<?xml version="1.0" encoding="utf-8"?> 
<bitmap 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/ic_menu_icon" 
    android:tint="@color/pink"/> 
+0

Il problema è che ricevo queste icone dalla richiesta http, non dalle risorse .. – diesersamat

0

Se le icone sono in una ImageView è possibile utilizzare setColorFilter.

Come in questo esempio dall'app su cui sto lavorando, dove l'icona è colorata quando è selezionata in navigationDrawer.

ImageView iconView = (ImageView) view.findViewById(R.id.icon); 

iconView.setColorFilter(selected ? 
    getResources().getColor(R.color.navdrawer_icon_selected_tint) : 
    getResources().getColor(R.color.navdrawer_icon_tint)); 

È possibile applicare setColorFilter anche direttamente al Drawable.

+0

È possibile ottenere ImageView delle icone da NavigationView? – diesersamat

+0

Non penso ci sia un 'ImageView' in NavigationView. Si applica 'setColorFilter' direttamente a' Drawable' che si ottiene da 'getIcon()'. Non è necessario ottenere un 'ImageView' poiché' ImageView' lo applica anche al 'Disegnabile'. – miva2

+0

Come ho già detto, ho già impostato ColorFilter sull'elemento, ma non funziona – diesersamat