2015-09-07 2 views
9

Ich möchte einige Symbole nicht getönt, und einige getönt halten. Jetzt habe ich:Wie Tint in NavigationView auf einige Symbole eingestellt werden

app:itemIconTint="@color/menu_icons_selector" 

Es alle Symbole Reflexen. nicht getönt

mNavigationView.setItemIconTintList(null); 

und dann

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

einstellen Tönung nur bis 4. Artikel

Ich versuche, alle Symbole zu machen, aber das funktioniert nicht - alle Symbole jetzt nicht getönt sind, und 4. auch nicht getönt.

+0

ich nur sehen Sie bereits verwenden 'setColorFilter'. In diesem Fall wird meine Antwort wahrscheinlich nicht viel helfen, wenn es nicht funktioniert (aber Sie können es für zukünftige Referenz lassen). Versuchen Sie, die 'app: itemIconTint' und' setItemIconTintList' zu entfernen. Das sollte funktionieren, glaube ich. Stellen Sie außerdem sicher, dass es tatsächlich aufgerufen wird. Mine läuft in onPostCreate(). – miva2

Antwort

5

Dies ist für mich zu arbeiten .... Auf diese Weise können Sie einzelne Navigation MenuItem Symbol Farbe tönen Programmatically

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

Danke das ist, was ich gesucht habe. – Sloosh

0

Sie können „wrap“ das Symbol als ziehbar (res/ziehbar) und Anwendung der geltenden Tönung

<?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

Problem ist, dass ich diese Symbole von HTTP-Anfrage, nicht von Ressourcen erhalten .. – diesersamat

0

Wenn Ihre Symbole in einem ImageView sind, können Sie setColorFilter verwenden.

Wie in diesem Beispiel aus der App, an der ich arbeite, wo das Symbol getönt ist, wenn es im NavigationDrawer ausgewählt ist.

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)); 

Sie können setColorFilter gelten auch direkt an die Drawable.

+0

Ist es möglich, ImageViews von Symbolen aus NavigationView zu bekommen? – diesersamat

+0

Ich glaube nicht, dass es innerhalb von NavigationView ein ImageView gibt. Sie wenden 'setColorFilter' direkt auf' Drawable' an, das Sie von 'getIcon()' erhalten. Es ist nicht notwendig, eine 'ImageView' zu erstellen, da' ImageView' sie auch auf 'Drawable' anwendet. – miva2

+0

Wie ich schon sagte, ich ColorFilter bereits auf Artikel, aber es funktioniert nicht – diesersamat

Verwandte Themen