web-dev-qa-db-fra.com

Changer la couleur de l’icône du tiroir de navigation dans Android Modèle par défaut de Studio

Le nouveau modèle d'activité de tiroir de navigation par défaut dans Android Studio

enter image description here

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:

enter image description here

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.

enter image description here

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.

45
ojonugwa ochalifu

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" />
108
ojonugwa ochalifu

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>
33
Pablo Cegarra

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.

3
Smeet

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.

1
Reejesh PK

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

0
Parth Anjaria