Dans ma candidature, je montre une barre d'action contextuelle et parce que je n'ai pas de place à toutes les actions, certaines d'entre elles sont accessibles sous le bouton de menu de débordement. Maintenant, je veux styler le menu de débordement et changer son arrière-plan. Mon thème hérite de thème.appcompat, et j'ai ces styles définis:
<item name="android:popupMenuStyle">@style/PopupMenu</item> <item name="android:listPopupWindowStyle">@style/PopupMenu</item> <item name="android:dropDownListViewStyle">@style/DropDownListView</item> <style name="PopupMenu" parent="Widget.AppCompat.PopupMenu"> <!--<item name="android:popupBackground">@color/dark_color</item>--> <item name="android:textColor">?android:textColorPrimary</item> <item name="android:dropDownSelector">?popupItemBackground</item> </style> <style name="DropDownListView" parent="Widget.AppCompat.ListView.DropDown"> <item name="android:listSelector">?popupItemBackground</item> <item name="android:divider">@null</item> <item name="android:dividerHeight">0dp</item> </style>
3 Réponses :
Pour modifier l'arrière-plan du menu de débordement, vous devez remplacer l'attribut digue Si vous devez changer autre chose que l'arrière-plan, s'il vous plaît laissez-moi un commentaire. P> p> actionververflowmenustyle code>:
bg_cab_popup code> peut être n'importe quel type de dessinable. Mais, en utilisant un 9 patch, il est logique. P>
J'essayais votre solution en entrant une valeur de couleur pour Popupbackground et n'a pas fonctionné comme prévu. Le résultat était une sorte de fond doublé et erroné pour le menu de débordement, mais cela le change. Lorsque j'essaie avec une ressource attise, cela fonctionne. Mais ensuite, j'ai besoin d'imiter le fond des autres menus de mon application, qui ont le formulaire par défaut (je change simplement la couleur). Puis-je simplement changer la couleur ici aussi ou dois-je rechercher la ressource Android qu'ils utilisent pour les antécédents de menu? Si tel est le cas, où puis-je le trouver? THX
@Sandra je n'ai pas essayé de passer une valeur de couleur à la place d'un digue. Le problème pourrait être que colordrawable code> (c'est la valeur de couleur enfin convertie en) n'a pas de largeur intrinsèque et de hauteur. J'utilise Photoshop pour la plupart des produits d'image. L'avantage évident est que vous pouvez avoir des thèmes complètement personnalisés. Quelque chose comme ceci: Menu de débordement BG à l'aide d'un .
Je vais supposer que vous utilisez la bibliothèque de la dernière (21.x.x.x) AppCompat-V7 et avez adventé le nouveau widget code> widget. Pour réaliser ce que vous voulez, vous ne modifiez pas votre thème de l'application principal (à l'exception du mode d'action de sélection de texte), mais appliquez un style à la barre d'outils code> de votre présentation ( style = "@ style /Widget.yourapp.toolbar " code>). La définition de style peut sembler similaire à celle-ci:
<style name="Widget.PopupWindow">
<item name="popupBackground">@drawable/editbox_dropdown_background_dark</item>
<item name="popupAnimationStyle">@style/Animation.PopupWindow</item>
</style>
La solution que vous suggérez fonctionne correctement pour la barre d'outils et son menu de débordement, mais ne fonctionne pas pour le menu de débordement dans la cabine. Je l'ai essayé et le menu de la barre d'action contextuelle n'est toujours pas stylé ...
S'il vous plaît voir la réponse mise à jour. Le mode d'action nécessite un style «ancienne école».
Merci pour votre aide jusqu'à présent, mais je ne peux toujours pas le faire travailler. J'ai mis en œuvre ActionModePopUwindowstyle dans le thème de mon activité et l'ai dirigé vers mon style personnalisé qui ressemble à ceci comme suit:
Essayez de mettre le actionmodepopwindowstyle code> à la barre d'outils code> au lieu de l'activité
code>.
J'ai enfin une solution. Il semble que vous ayez besoin d'ajouter ceci à votre thème: où: p> L'attribut Colorbackground peut prendre toute valeur de couleur que vous avez Comme et avec cela, vous avez le menu de débordement du bouton de l'action contextuelle. p> p>
Avez-vous fait des progrès sur cela? J'ai trouvé
actionmodepopwindowstyle code> dans
plateforme_frameworks_base / core / res / res / res / valeurs / themes.xml code> et
widget.popuwindow code> in
plateforme_frameworks_base / noyau / res / res / résolution / styles.xml code> mais le remplacer dans mes styles ne semble pas avoir d'effet.
Je n'ai pas encore trouvé de solution ...
@JDJ j'ai trouvé une solution. Voir ma réponse ..