web-dev-qa-db-fra.com

Changer la couleur du bouton de débordement sur ActionBar

Est-il possible de changer la couleur du bouton de débordement (3 points verticaux) sur la barre d’action? Je n'ai trouvé aucun style pour le bouton de débordement.

Merci

52
Gaurav

Vous pouvez modifier l'image utilisée à l'aide de la déclaration de style suivante. 

<style name="MyCustomTheme" parent="style/Theme.Holo">
    <item name="Android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>

<style name="MyCustomTheme.OverFlow">
    <item name="Android:src">@drawable/my_overflow_image</item>
</style>

Et si vous utilisez ActionBarSherlock, voici comment procéder.

<style name="MyCustomTheme" parent="style/Theme.Sherlock">
    <item name="Android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
    <item name="actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>

<style name="MyCustomTheme.OverFlow">
    <item name="Android:src">@drawable/my_overflow_image</item>
</style>
64
XGouchet

La réponse de XGouchet est géniale, mais je voulais simplement ajouter que si vous héritez d'un style existant, vous obtenez le remplissage standard, l'état sélectionné, etc.

<style name="MyCustomTheme.OverFlow" parent="Widget.Sherlock.ActionButton.Overflow">
    <item name="Android:src">@drawable/title_moreicon</item>
</style>
20

Certaines de ces réponses sont excessives et d’autres donnent des résultats limités. La réponse est beaucoup plus simple. Vous pouvez le régler sur la couleur de votre choix, à tout moment. Ici:

toolbar.getOverflowIcon().setColorFilter(colorInt, PorterDuff.Mode.SRC_ATOP);
12
Peter Griffin

Si vous utilisez AppCompat, vous pouvez créer un nouveau style personnalisé avec l'attribut Android:textColorSecondaryset correspondant à la couleur requise et l'utiliser comme thème pour la barre d'outils . Android: Modification de la couleur du texte et du débordement de l'icône de la barre d'outils

8
notsopopularguy

Autre option programmatique:

        Drawable drawable = toolbar.getOverflowIcon();
        if(drawable != null) {
            drawable = DrawableCompat.wrap(drawable);
            DrawableCompat.setTint(drawable.mutate(), getResources().getColor(R.color.thecolor));
            toolbar.setOverflowIcon(drawable);
        }

J'espère que ça aide!

4
jos

Mettre des images n’est pas une bonne idée, car si vous pouvez le changer en changeant uniquement les couleurs, vous n’avez pas besoin d’utiliser une image supplémentaire . <item name="Android:textColorPrimary">@Android:color/white</item> résoudra votre problème. Seul un petit problème est que cette couleur sera appliquée à la couleur du texte de votre menu de débordement également, et à beaucoup d’autres endroits bien sûr :)

2
Neo

ajoutez simplement cette ligne dans le style que vous avez choisi dans le fichier style.xma

<item name="colorControlNormal">@color/white</item>

ça marche bien ... si vous utilisez

<item name="textColorSecondary">@color/white</item>

alors vos autres éléments comme la couleur des icônes du menu de navigation du tiroir et le bouton radio seront affectés

1
Vipendra Singh

Si vous utilisez la dernière barre d'outils, vous devez placer la déclaration dans styles.xml, comme indiqué dans le code ci-dessous:

<style name="AppToolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="Android:textColorPrimary">@Android:color/white</item>
    <item name="Android:textColorSecondary">@Android:color/black</item>
</style>
1
Joseph Lam
<style name="MyCustomTheme" parent="@style/Theme.AppCompat.Light">
  <item name="actionOverflowButtonStyle">@style/OverflowMenuButtonStyle</item>
</style>
<style name="OverflowMenuButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow">
  <item name="Android:src">@drawable/quantum_ic_more_vert_white_24</item>
</style>

Notez que cela diffère de la réponse de XGouchet en supprimant l’espace de noms Android. La réponse de XGouchet ne fonctionne que pour les périphériques Lollipop et supérieurs, tandis que la mienne fonctionne pour tous les périphériques API 7+. 

ref: Le thème Custom AppCompat ne modifie pas l'icône de débordement sur les anciens appareils

1
user8148577

Si vous voulez juste que l'icône 3 points soit blanche au lieu de noire, vous pouvez simplement changer le thème de la barre d'outils en ceci:

 <Android.support.v7.widget.Toolbar
     ...
     Android:theme="@Android:style/ThemeOverlay.Material.Dark.ActionBar"
 />

référence complète ici: medium.com/the-curious-case-of-the-overflow-icon-color

0
Brendon

Pour le changement de couleur de l'icône Dépassement, vous pouvez simplement ajouter

toolbar.setOverflowicon(getDrawable)
0
Navin Kumar
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.dashboard, menu); // dashboard is xml file name
        Drawable drawable = menu.findItem(R.id.lan).getIcon();
        if (drawable != null) {
            drawable.mutate();
            drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
        }
        return true;
    }

Cela fonctionne pour moi et je l'ai trouvé de ici