Est-il possible de changer l'icône de débordement dans la barre d'action? J'ai des icônes bleues pour tous les éléments ActionBar et je souhaite également modifier l'icône de débordement lorsqu'elle apparaît.
Vous pouvez utiliser un style, mais vous devez l'ajouter à la déclaration de thème principale.
<resources>
<!-- Base application theme. -->
<style name="Your.Theme" parent="@Android:style/Theme.Holo">
<!-- Pointer to Overflow style ***MUST*** go here or it will not work -->
<item name="Android:actionOverflowButtonStyle">@style/OverFlow</item>
</style>
<!-- Styles -->
<style name="OverFlow" parent="@Android:style/Widget.Holo.ActionButton.Overflow">
<item name="Android:src">@drawable/ic_action_overflow</item>
</style>
</resources>
Vous pouvez aussi le changer dynamiquement, ce dont je vais parler en détail ici:
Modification de l'icône du menu débordement Android par programme
Pour ceux qui ne peuvent pas le faire fonctionner, essayez ceci SANS l'espace de nom "Android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
Changez l’icône de débordement personnalisée de votre barre d’action dans styles.xml.
<resources>
<!-- Base application theme. -->
<style name=“MyTheme" parent="@Android:style/Theme.Holo">
<!-- Pointer to Overflow style DONT forget! -->
<item name="Android:actionOverflowButtonStyle">@style/MyOverFlow</item>
</style>
<!-- Styles -->
<style name="MyOverFlow" parent="@Android:style/Widget.Holo.ActionButton.Overflow">
<item name="Android:src">@drawable/ic_your_action_overflow</item>
</style>
</resources>
Mettez le thème personnalisé "MyTheme" dans la balise d'application de AndroidManifest.xml
<application
Android:name="com.example.Android.MainApp"
Android:theme="@style/AppTheme">
</application>
S'amuser.@.@
Peu importe ce que j'ai essayé de faire dans styles.xml
, aucune des solutions ne fonctionnait pour moi. En fin de compte, si vous avez AppCompat 23+, ce qui devrait être fait, c’est le moyen le plus simple de fonctionner:
toolbar.setOverflowIcon(drawable);
La réponse de @ adneal est correcte (il ne s'agit donc que d'une explication du wiki de la communauté à développer).
Un des commentaires a suggéré qu'il pourrait y avoir un malentendu sur la façon de procéder. Ma réponse est donc un autre exemple sur la façon de remplacer l'image d'icône Débordement.
Le code ci-dessous est basé sur les styles de modèle de l'exemple ADT New Android Project. Le code provient du fichier styles.xml
dans le dossier res/values
.
<style name="AppBaseTheme" parent="Android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="Android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
</style>
<style name="OverflowMenuButton" parent="@Android:style/Widget.Holo.ActionButton.Overflow">
<item name="Android:src">@drawable/ic_menu_moreoverflow</item>
</style>
Le code ci-dessus remplace l’icône de débordement par défaut par tout ce que vous pouvez dessiner et qui est nommé ic_menu_moreoverflow
. Si vous voulez un moyen rapide de le tester, utilisez le nom de fichier de l'icône de lanceur de votre application, ce qui permettra de comprendre comment cela fonctionne.
Une ressource utile à utiliser pour essayer de comprendre le style ActionBar
est la suivante:
Là, vous pouvez définir des couleurs spécifiques à utiliser pour votre icône Débordement et le fichier Zip inclura le fichier styles.xml
correct pour vous.
Après une longue recherche, ce que j’ai reçu comme conseils:
Ajoutez l'élément dans le thème dans le fichier theme.xml:
<item name="Android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="Android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
Ajouter l'icône dans le style dans le même fichier, je veux dire theme.xml:
<style name="MyActionButtonOverflow" parent="Android:style/Widget.Holo.ActionButton.Overflow">
<item name="Android:src">@drawable/icon_menu</item>
</style>
Vérifiez l'icône personnalisée que vous souhaitez modifier
Ça a fonctionné pour moi
Pour le changement de couleur de l'icône Dépassement, vous pouvez simplement ajouter
toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));
ou
toolbar.setOverflowicon(getDrawable(R.id.redIcon));
Cela va changer l'icône, choisir la couleur que vous voulez et définir comme Overflowicon.