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.xml
fichier dans le res/values
dossier.
<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 ActionBar
style 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.xml
fichier 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