2015-09-07 17 views
9

Chcę, aby niektóre ikony nie były przyciemniane, a niektóre zabarwione. Teraz mam:Jak ustawić Odcień w Nawigacji Wyświetl niektóre ikony

app:itemIconTint="@color/menu_icons_selector" 

Odcień wszystkie ikony.

Staram się wszystkie ikony nie przyciemniane

mNavigationView.setItemIconTintList(null); 

a następnie

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

ustawić odcień tylko do 4. pozycji, ale to nie działa - wszystkie ikony są teraz nie tonowane i 4 także nie zabarwione.

+0

po prostu zobaczyć używałeś 'setColorFilter'. W takim przypadku moja odpowiedź prawdopodobnie nie pomoże ci, jeśli to nie zadziała (ale możesz zostawić to na przyszłość). Spróbuj usunąć 'app: itemIconTint' oraz' setItemIconTintList'. To powinno działać, jak sądzę. Upewnij się również, że jest rzeczywiście wywołana. Mój działa w onPostCreate(). – miva2

Odpowiedz

5

To działa dla mnie .... W ten sposób można zabarwić jednostka nawigacji MenuItem Ikona kolor Programowo

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

Dzięki temu właśnie tego szukałem. – Sloosh

0

można „owinąć” the ikona jako rozciągliwej (RES/rozciągliwej) oraz zastosowanie obowiązującymi odcień

<?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 polega na tym, że otrzymuję te ikony z żądania http, a nie z zasobów. – diesersamat

0

Jeśli ikony są w ImageView można użyć setColorFilter.

Podobnie jak w tym przykładzie z aplikacji nad którą pracuję, gdzie ikona jest zabarwiona, gdy jest wybrana w nawigacjiDrawer.

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

setColorFilter można zastosować również bezpośrednio do Drawable.

+0

Czy można uzyskać ImageViews ikon z NavigationView? – diesersamat

+0

Nie sądzę, że jest 'ImageView' wewnątrz NavigationView. Stosujesz 'setColorFilter' bezpośrednio na' Drawable', który otrzymujesz z 'getIcon()'. Nie ma potrzeby uzyskiwania "ImageView", ponieważ 'ImageView' również stosuje go do' Drawable'. – miva2

+0

Jak już powiedziałem, już ustawiam ColorFilter na pozycję, ale nie działa – diesersamat