Réponses:
Vous pouvez avec 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 également le modifier dynamiquement, ce que je vais détailler ici:
Modification de l'icône du menu Android Overflow par programmation
parent="Widget.Sherlock.ActionButton.Overflow"
parent="@style/Widget.AppCompat.ActionButton.Overflow"semble fonctionner pour moi.
Pour ceux qui ne peuvent pas le faire fonctionner, essayez ceci SANS l'espace de noms "android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
Modifiez votre icône de débordement personnalisée d'Actionbar 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>Placez le thème personnalisé "MyTheme" dans la balise d'application d'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 styles.xml, aucune des solutions n'a fonctionné pour moi. En fin de compte, si vous avez AppCompat 23+, ce que vous devriez, c'est le moyen le plus simple qui fonctionne réellement:
toolbar.setOverflowIcon(drawable);
Réponse de @ adneal est correcte (il ne s'agit donc que d'une explication du wiki de la communauté pour la développer).
L'un des commentaires suggérait qu'il pouvait y avoir un malentendu sur la façon de procéder, donc ma réponse est juste un autre exemple sur la façon de remplacer l'image de l'icône de 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 styles.xmlfichier dans le res/valuesdossier.
<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>
Ce que ce code ci-dessus fait est de remplacer l'icône de débordement par défaut par le dessinable que vous avez nommé ic_menu_moreoverflow . Si vous voulez un moyen rapide de le tester, utilisez le nom de fichier de l'icône du lanceur de votre application, ce qui rendra évident son fonctionnement.
Une ressource utile à utiliser pour comprendre le ActionBarstyle est:
Là, vous pouvez définir des couleurs spécifiques à utiliser pour votre icône de débordement, et le fichier ZIP inclura le styles.xmlfichier qui vous convient.
Pour le changement de couleur de l'icône de débordement, vous pouvez simplement ajouter
toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));
ou
toolbar.setOverflowicon(getDrawable(R.id.redIcon));
Cela changera l'icône, choisira la couleur de votre choix et la définira comme Overflowicon.
Après une longue recherche, j'ai obtenu les conseils à suivre comme:
Ajoutez l'élément dans le thème dans le theme.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>Ajoutez l'icône dans le style dans le même fichier que je veux dire theme.xml:
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/icon_menu</item>
</style>Découvrez l'icône personnalisée que vous souhaitez modifier
Ça a marché pour moi