web-dev-qa-db-fra.com

Changer l'icône de débordement dans la barre d'action

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.

106
pjanecze

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

248
adneal

Pour ceux qui ne peuvent pas le faire fonctionner, essayez ceci SANS l'espace de nom "Android:".

<item name="actionOverflowButtonStyle">@style/OverFlow</item>
16
user2968401
  1. 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>
    
  2. 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.@.@

4
Luna Kong

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);
3
Starwave

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.

1
Richard Le Mesurier

Après une longue recherche, ce que j’ai reçu comme conseils:

  1. Vérifiez le thème dans le fichier manifeste.
  2. Ensuite, allez à res-> valeurs-> thèmes.
  3. Trouvez le nom du thème dans ce fichier.
  4. 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>
    
  5. 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>
    
  6. Vérifiez l'icône personnalisée que vous souhaitez modifier

Ça a fonctionné pour moi

0
Issac Balaji

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.

0
Navin Kumar