Próbuję wyświetlić ikonę obok pozycji w moim menu w szufladzie nawigacji, ale z jakiegoś powodu ikona zawsze jest wyświetlana w kolorze szarym, a nie w oryginalnym kolorze (brązowym). Czy jest jakiś sposób, aby temu zapobiec, aby pokazać oryginalny kolor ikony?
MainActivity.java
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
if (navigationView != null) {
setupDrawerContent(navigationView);
}
}
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
mDrawerLayout.closeDrawers();
return true;
}
});
}
}
drawer_view.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Section">
<menu>
<item
android:id="@+id/navigation_item_1"
android:icon="@drawable/ic_browncircle"
android:title="Sub item 1" />
</menu>
</item>
</menu>
java
android
xml
android-support-library
MacaronLover
źródło
źródło
ic_browncircle
?.setColorFilter(MY_BROWN_COLOR)
tego widoku?Odpowiedzi:
Znalazłem odpowiedź tutaj: https://stackoverflow.com/a/30632980/875249
Aby uniknąć linku, jest to całkiem proste:
Spowoduje to wyłączenie barwienia na podstawie stanu, ale możesz także określić własną listę. U mnie zadziałało!
Tutaj możesz uzyskać szczegółowe informacje na temat tworzenia listy stanów kolorów, ale jest to również dość proste: http://developer.android.com/reference/android/content/res/ColorStateList.html
źródło
app:itemIconTint="@null"
ale bez sukcesu.mNavigationView.setItemIconTintList(null);
To jest odpowiedź, której szukałem tak długo ...Posługiwać się
prawda. Jeśli wszystkie twoje ikony są w jednym schemacie kolorów (miałem wszystkie białe), możesz skonfigurować za pomocą pliku xml - app: itemIconTint = "@ android: color / white"
Mój przypadek:
źródło
mNavigationView.setItemIconTintList(null);
usuwa domyślny iconTint ze wszystkich ikon. Teraz, jeśli masz ikonę w kolorze czerwonym, będzie wyglądać na czerwoną, nie zostanie zastosowany żaden iconTint.Próbowałem czegoś podobnego w jednej z moich aplikacji. I tak, wygląda na to, że kolor ikony się nie zmienia. Ale udało mi się zrobić inne obejście. Oto mój
ic_browncircle.xml
Myślę, że jest to coś podobnego do Ciebie, ale nie ma żadnego efektu i nie zmienia koloru.
Więc to, co zrobiłem, to to.
I wydaje się, że działa. Oto wynik.
źródło
Jeśli tworzysz projekt z szufladą nawigacyjną, którą
Android Studio
udostępniono. W swojej klasie Main Activity możesz po prostu dodać ten wiersz kodunavigationView.setItemIconTintList(null);
do swojejonCreate
metody. Lubię to;źródło
Możesz spróbować użyć przyciemnianego rysunku, nie jestem pewien, czy działa poniżej 5,0.
Utwórz do rysowania i dodaj następujący kod.
A następnie zmień element menu, który można narysować, na ten, który właśnie utworzyłeś. Jeśli to nie zadziała, nie jestem pewien innych rozwiązań. Możesz wypróbować tę bibliotekę: https://github.com/mikepenz/MaterialDrawer Często jej używam w moich projektach.
źródło
Po prostu dodaj jedną linię w xml
źródło
app:itemIconTint="@null"
Niektóre, jak ten kod nie działa MainActivity.java
więc możesz go używać.
MainActivity.java
źródło
Dodaj
źródło