J'essaie d'afficher une icône à côté d'un élément de mon menu pour mon tiroir de navigation, mais pour une raison quelconque, l'icône apparaît toujours en gris plutôt que dans la couleur d'origine (marron). Existe-t-il un moyen d'empêcher que cela se produise afin d'afficher la couleur d'origine de l'icône?
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;
}
});
}
}
tiroir_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
la source
la source
ic_browncircle
?.setColorFilter(MY_BROWN_COLOR)
ce point de vue?Réponses:
J'ai trouvé la réponse ici: https://stackoverflow.com/a/30632980/875249
Pour éviter le lien, c'est assez simple:
Cela désactive toutes les teintes basées sur l'état, mais vous pouvez également spécifier votre propre liste. Cela a très bien fonctionné pour moi!
Voici où vous pouvez obtenir les détails sur la création d'une liste d'états de couleurs, mais c'est assez simple aussi: http://developer.android.com/reference/android/content/res/ColorStateList.html
la source
app:itemIconTint="@null"
mais sans succès.mNavigationView.setItemIconTintList(null);
C'est la réponse que je cherchais depuis si longtemps ...Utilisation
c'est juste. Aussi si toutes vos icônes dans un jeu de couleurs (j'avais tout le blanc), vous pouvez configurer via un fichier xml - app: itemIconTint = "@ android: couleur / blanc"
Mon cas:
la source
mNavigationView.setItemIconTintList(null);
supprime l'icône par défautTint de toutes les icônes. Maintenant, si votre icône est de couleur rouge, elle apparaîtra en rouge, aucune iconTint ne sera appliquée.J'ai essayé quelque chose de similaire dans l'une de mes applications. Et oui, il semble que la couleur de l'icône ne change pas. Mais j'ai réussi à faire avec une autre solution de contournement. Voici mon
ic_browncircle.xml
Ce qui, je crois, est quelque chose de similaire à vous, mais cela n'a aucun effet et ne change pas la couleur.
Alors ce que j'ai fait, c'est ceci.
Et cela semble fonctionner. Voici le résultat.
la source
Si vous créez un projet avec un tiroir de navigation dont le
Android Studio
fichier. Dans votre classe Activité principale, vous pouvez simplement ajouter cette ligne de codenavigationView.setItemIconTintList(null);
à votreonCreate
méthode. Comme ça;la source
Vous pouvez essayer d'utiliser un dessinable teinté, sans savoir s'il fonctionne en dessous de 5,0.
Créez un dessinable et ajoutez le code suivant.
Et puis changez votre élément de menu dessiné à celui que vous venez de créer. Si cela ne fonctionne pas, je ne suis pas sûr d’autres solutions. Vous pouvez essayer cette librairie: https://github.com/mikepenz/MaterialDrawer Je l'utilise beaucoup dans mes projets.
la source
Ajoutez simplement une ligne en xml
la source
app:itemIconTint="@null"
Certains comment ce code ne fonctionne pas MainActivity.java
afin que vous puissiez l'utiliser.
MainActivity.java
la source
Ajoute ça
la source