Ich versuche, ein Symbol neben einem Element in meinem Menü für meine Navigationsschublade anzuzeigen, aber aus irgendeinem Grund wird das Symbol immer in Grau und nicht in der Originalfarbe (Braun) angezeigt. Gibt es eine Möglichkeit, dies zu verhindern, um die ursprüngliche Farbe des Symbols anzuzeigen?
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
quelle
quelle
ic_browncircle
?.setColorFilter(MY_BROWN_COLOR)
, diese Ansicht?Antworten:
Ich habe die Antwort hier gefunden: https://stackoverflow.com/a/30632980/875249
Um den Link zu vermeiden, ist es ziemlich einfach:
Dies deaktiviert alle zustandsbasierten Tönungen, Sie können jedoch auch Ihre eigene Liste angeben. Es hat super für mich funktioniert!
Hier erhalten Sie Details zum Erstellen einer Farbstatusliste, die jedoch auch recht einfach ist: http://developer.android.com/reference/android/content/res/ColorStateList.html
quelle
app:itemIconTint="@null"
aber kein Erfolg.mNavigationView.setItemIconTintList(null);
Dies ist die Antwort, nach der ich so lange gesucht habe ...Verwenden
es ist richtig. Auch wenn alle Ihre Symbole in einem Farbschema (ich hatte alle weiß), können Sie über XML-Datei einrichten - app: itemIconTint = "@ android: color / white"
Mein Fall:
quelle
mNavigationView.setItemIconTintList(null);
entfernt den Standard iconTint von allen Symbolen. Wenn Sie Ihr Symbol nun in roter Farbe haben, wird es rot angezeigt und es wird kein iconTint angewendet.Ich habe in einer meiner Apps etwas Ähnliches ausprobiert. Und ja, es scheint, dass sich die Symbolfarbe nicht ändert. Aber ich habe es geschafft, eine andere Problemumgehung zu finden. Hier ist meins
ic_browncircle.xml
Was ich glaube, ist etwas Ähnliches wie Sie, aber es hat keine Wirkung und ändert die Farbe nicht.
Also habe ich das getan.
Und es scheint zu funktionieren. Hier ist das Ergebnis.
quelle
Wenn Sie ein Projekt mit Navigationsschublade erstellen, wird das
Android Studio
mitgeliefert. In Ihrer Hauptaktivitätsklasse können Sie diese Codezeile einfachnavigationView.setItemIconTintList(null);
zu IhreronCreate
Methode hinzufügen . So was;quelle
Sie können versuchen, ein getöntes Zeichenelement zu verwenden. Sie sind sich nicht sicher, ob es unter 5.0 funktioniert.
Erstellen Sie eine Zeichnung und fügen Sie den folgenden Code hinzu.
Ändern Sie dann Ihren zu zeichnenden Menüpunkt in den gerade erstellten. Wenn das nicht funktioniert, bin ich mir keiner anderen Lösung sicher. Sie können diese Bibliothek ausprobieren: https://github.com/mikepenz/MaterialDrawer Ich verwende sie häufig in meinen Projekten.
quelle
Fügen Sie einfach eine Zeile in XML hinzu
quelle
app:itemIconTint="@null"
Einige, wie dieser Code nicht funktioniert MainActivity.java
so können Sie es verwenden.
MainActivity.java
quelle
Füge das hinzu
quelle