Style de bouton dans AlertDialogs
Personne ne sait comment faire pour remplacer le style par défaut pour AlertDialog boutons? J'ai regardé à travers la source Android pour thèmes et styles et expérimenté avec différentes choses, mais je n'ai pas été en mesure de trouver un moyen qui fonctionne.
Ce que j'ai ci-dessous fonctionne pour changer les décors, mais ne pas faire n'importe quoi avec les boutons. myTheme
est appliqué à l'ensemble de la <application>
par le manifeste. (Certains autres éléments ont été supprimés pour des raisons de clarté, mais ils ne concernent que la barre de titre.)
<style name="myTheme" parent="android:Theme">
<item name="android:buttonStyle">@style/customButtonStyle</item>
<item name="android:alertDialogStyle">@style/dialogAlertTheme</item>
</style>
<style name="dialogAlertTheme" parent="@android:style/Theme.Dialog.Alert">
<item name="android:fullDark">@drawable/dialog_loading_background</item>
<item name="android:topDark">@drawable/dialog_alert_top</item>
<item name="android:centerDark">@drawable/dialog_alert_center</item>
<item name="android:bottomDark">@drawable/dialog_alert_bottom</item>
<!-- this last line makes no difference to the buttons -->
<item name="android:buttonStyle">@style/customButtonStyle</item>
</style>
Des idées?
source d'informationauteur Steve Haley
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous devez mettre en place votre propre
Dialog
classe.Étant donné que MrSnowflake raisonnement est inexact, je prends la liberté de fournir une autre réponse.
Il y a quelque chose mal avec le balisage de Steve Haley question, et il est de mélanger alertDialogStyle et alertDialogTheme, probablement à cause du fait que alertDialogTheme a été introduite longtemps après alertDialogStyle a été autour de.
Donc, même si @android:style/Thème.La boîte de dialogue.Alert est disponible sur votre Android plate-forme, vous ne pouvez toujours pas utiliser sa puissance expressive, en l'accrochant un cusomized version dans votre propre thème, à moins que votre plate-forme Android prend en charge une android:alertDialogTheme attribut/item pour les thèmes. (Il peut ou peut ne pas être le cas que telle incompatible Android versions existent, je ne sais pas pour sûr. Mais le balisage utilisé dans la question, il ne semble.)
Dans la question du balisage, le parent="@android:style/Thème.La boîte de dialogue.Alerte" ne fait rien exception de la création de l'illusion que vous êtes à la personnalisation de la boîte de dialogue d'alerte thème lorsque vous êtes vraiment seulement la personnalisation de la boîte de dialogue d'alerte de style.
De cette façon, le balisage doit ressembler; pas toutes les versions d'Android en charge toutes les fonctionnalités.
Personnalisation de la boîte de dialogue d'alerte de style a été autour depuis un certain temps, mais qui est limité à fournir (arrière-plan) un drawable pour "fullDark", "topDark" etc.
Personnalisation de la boîte de dialogue d'alerte thème ouvre une méthode pour fournir des attributs tels que windowBackground, windowTitleStyle et tels, mais comme l'a dit avant, vous avez besoin d'une version d'Android qui prend en charge la alertDialogThem attribut/item pour les thèmes. Je ne peux pas savoir exactement quand cela a été mis en place, mais il n'a pas été d'Android 2.2 et de l'Éclipse va vous dire de toute façon...
Je n'ai pas les ressources nécessaires pour valider MrSnowflake la conclusion qu'il est impossible de style de dialogue alerte de boutons dans le XML, mais à moins que nous sommes face à l'un de ceux un peu méchant aspects de Android où une fonctionnalité qui manque vraiment, je trouve que cela est peu probable.
Comme une question de fait, ce qu'il manque à la question est la partie la plus pertinente à cet égard, à savoir
donc la conclusion que la boîte de dialogue d'alerte boutons de ne pas obéir à la Widget.Le bouton n'est pas encore prouvé de mon point de vue.
Consolidés conclusion: Les capacités d'alerte de style dialogues indépendamment des autres widgets est limité à Android, mais devient de plus puissant que de nouvelles versions d'améliorer à cet égard.
Essayez ceci:
Vous pouvez remplacer "buttonBarButtonStyle" au lieu de "buttonStyle" comme ceci:
J'ai fait une méthode comme ce qui va changer le bouton par défaut les couleurs de fond et de la
Cela pourrait être utile pour certaines personnes!!!