Le nouveau modèle d'activité de tiroir de navigation par défaut dans Android Studio
définit ses titres et ses icônes dans un fichier de menu activity_main_drawer
comme ça:
<group Android:checkableBehavior="single">
<item
Android:id="@+id/nav_camara"
Android:icon="@drawable/ic_action_Emo_cool"
Android:title="Import" />
<item
Android:id="@+id/nav_gallery"
Android:icon="@Android:drawable/ic_menu_gallery"
Android:title="Gallery" />
<item
Android:id="@+id/nav_slideshow"
Android:icon="@Android:drawable/ic_menu_slideshow"
Android:title="Slideshow" />
...
Le premier élément de mon exemple utilise une icône rouge:
mais lorsque je lance l'application, la couleur de l'icône reste noire.J'ai testé cela pour les icônes bleues, vertes, jaunes et violettes, mais le résultat est le même.
J'ai lu quelque part que la barre d'outils devrait utiliser ThemeOverlay.AppCompat.Dark.ActionBar
et mon application utilise déjà cela dans le styles.xml
fichier:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Au départ, je pensais que cela avait quelque chose à voir avec Android Studio, j'ai donc invalidé le cache et redémarré Android Studio sans chance.
Sur la base du commentaire de @ MD, tout ce que j'avais à faire était d'ajouter:
app:itemIconTint="@color/my_desired_colour"
à NavigationView
(il est situé dans activity_main.xml
fichier de mise en page) La teinte par défaut est le noir, mais vous pouvez utiliser une nuance de noir encore plus sombre en utilisant #000000
<Android.support.design.widget.NavigationView
Android:id="@+id/nav_view"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="start"
Android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:itemIconTint="#000000"
app:menu="@menu/activity_main_drawer" />
Créer un nouveau style:
<style name="DrawerIconStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@Android:color/red</item>
</style>
et n votre thème:
<item name="drawerArrowStyle">@style/DrawerIconStyle</item>
Basé sur le commentaire de @ojonugwa ochalifu et @ MD,
Vous pouvez y parvenir en écrivant app:itemIconTint
mais si vous écrivez ceci, la couleur de l'icône des tiroirs de navigation sera également modifiée. La solution simple et facile que j'ai trouvée après beaucoup de R & D est que vous avez défini <item name="colorControlNormal">#FFE730</item>
dans le thème de AppBarLayout
ou si vous utilisez Toolbar
uniquement sans AppBarLayout
, vous pouvez également écrire <item name="colorControlNormal">#FFE730</item>
dans le thème ou popupTheme
de Toolbar
dans votre xml.
Cela modifiera également la couleur de la flèche de retour de l'activité.
J'espère que cela vous aide tous ceux qui sont confrontés à ce type de problème.
Dans mon cas, j'avais un style
<style name="MyToolbarStyle" parent="Theme.AppCompat">
<item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
<style name="ActionButtonOverflowStyle">
<item name="Android:color">@color/colorPrimary</item>
</style>
<style name="DrawerArrowStyle">
<item name="Android:color">@color/colorPrimary</item>
</style>
et ont appliqué le thème à la mise en page de la barre d’application. Ainsi, l’enchaînement des couleurs par programme ne fonctionnait pas.
Donc, essayez de supprimer tous les styles que vous avez appliqués, au cas où vous ne pourriez pas changer la couleur de l'icône, puis essayez les solutions ci-dessus.
Vous devez modifier colorAccent dans le fichier de couleurs, quelle que soit la couleur souhaitée:
<color name="colorAccent">whichever color required</color>
Cette solution a fonctionné pour moi