AlertDialog style - comment changer de style (couleur) de titre, message, etc
J'ai de me casser la tête sur ce tout à fait un peu. Ce que j'ai besoin est, changer le style de tous les AlertDialog
s dans mon application android - dialogue de fond doit être blanc-ish, et le texte doit être black-ish. J'ai essayé de créer un grand nombre de styles, de thèmes, et de l'application du code, le manifeste, etc, mais sans succès, à l'égard des couleurs de texte à l'intérieur de la AlertDialog
. Maintenant, j'ai le plus simple de codes, mis comme ceci:
Manifeste:
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
styles.xml:
<style name="AppTheme" parent="AppBaseTheme"> <item name="android:alertDialogStyle">@style/DialogStyle</item> </style> <style name="DialogStyle" parent="@android:style/Theme.Dialog"> <!-- changing these background stuff works fine --> <item name="android:bottomBright">@android:color/white</item> <item name="android:bottomDark">@android:color/white</item> <item name="android:bottomMedium">@drawable/dialog_footer_bg</item> <item name="android:centerBright">@android:color/white</item> <item name="android:centerDark">@drawable/dialog_body_bg</item> <item name="android:centerMedium">@android:color/white</item> <item name="android:fullBright">@color/orange</item> <item name="android:fullDark">@color/orange</item> <item name="android:topBright">@color/green</item> <item name="android:topDark">@drawable/dialog_header_bg</item>
Les éléments énumérés ci-dessous ne fonctionnent pas (lisez les commentaires, j'ai mis au-dessus de chaque élément):
<!-- panelBackground is not getting set to null, there is something squarish around it --> <item name="android:panelBackground">@null</item> <!-- Setting this textColor doesn't seem to have any effect at all. Messages, title, button text color, whatever; nothing changes. --> <item name="android:textColor">#000000</item> <!-- Also tried with textAppearance, as follows. Didn't work --> <item name="android:textAppearance">?android:attr/textColorPrimaryInverse</item> <!-- Also tried changing textAppearancePrimary, to no avail --> <item name="android:textColorPrimary">#000000</item> <!-- Also need to change the dialog title text, tried it as follows, dint work: --> <item name="android:windowTitleStyle">@style/DialogWindowTitle</item> </style>
La DialogWindowTitle est définie comme suit:
<style name="DialogWindowTitle"> <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item> </style>
De sorte qu'aucun de ceux-ci est de travail. Quelqu'un peut me dire ce que j'ai pu faire de mal, et comment puis-je:
- Changer la couleur du texte pour les messages de contenu (texte)
- Changer le titre la couleur du texte
- Supprimer l'
panneau de fond
Note: j'ai besoin de soutien API 8 (2.2) vers le haut. Aussi, j'ai suis allé à travers la plupart de la question ici, et de google groupes, mais ne peuvent pas comprendre, mais j'ai le sentiment de son droit, en vertu de mon nez!
Edit: ajout de la capture d'écran:
- Pouvez-vous nous fournir une capture d'écran de la façon dont il n'y paraît actuellement?
- Capture d'écran ajoutés
- je veux savoir comment vous avez obtenu ces couleurs d'arrière-plan de changement. à l'aide de ce même code, je ne peux pas reproduire une couleur AlertDialog contre les API de niveau 9. avez-vous appliquer le thème ou le style d'une manière particulière? quelle est votre cible et min sdk niveau?
- bizarre... en quelque sorte, je l'ai eu à travailler et je n'ai aucune idée de comment. merci beaucoup pour ce post, j'ai été de me gratter la tête pendant des heures sur la fin sur ce. pour quiconque recherche, cette question/réponse est définitivement le moyen de personnaliser AlertDialogs dans l'API Android niveaux < 11.
- ...mais pour une raison quelconque, si j'exécute ce code sur n'importe quel appareil fonctionnant sous Android >= 3.0, la boîte de dialogue couleurs ne changent pas. il semble donc que ce doit être traité de deux manières différentes pour >2.3.3 et <2.3.3... peut-être de séparer les Apk? quel gâchis... ils ont vraiment défoncer ce entre les versions d'Android.
- Je pense que les propriétés sous DialogStyle sont uniquement à des fins non-fragment du dialogue, c'est pourquoi ils ne fonctionnent pas sur le post en nid d'abeille de périphériques. Vous n'avez pas besoin de plusieurs apk, mais juste pour définir des propriétés supplémentaires pour le fragment du dialogue. Ils ne dérangeront pas les uns les autres, et si ils le feraient, vous pouvez toujours utiliser la ressource de qualification. Jetez un oeil à Dadou réponse pour voir les nouvelles de la boîte de Dialogue thèmes et les styles.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de définir un Thème pour votre AlertDialog et y faire référence dans votre Activité de son thème. L'attribut est
alertDialogTheme
et pasalertDialogStyle
. Comme ceci:Vous serez en mesure de modifier la couleur et de l'apparence du texte pour le titre, le message et vous serez d'avoir un certain contrôle sur le fond de chaque zone. J'ai écrit un post de blog détaillant les étapes pour style une AlertDialog.
alertDialogTheme
signifie tout le reste.android:textAppearanceMedium
ne fonctionne pas pour moi lors de l'utilisation de l'app compat boîte de dialogue d'alerte: stackoverflow.com/questions/35179537/...android:textAppearanceMedium
de modifier le contenu de style, voir ce fil de discussion pour une solution de contournement stackoverflow.com/questions/35179537/...Retirez le panneau de fond
C'est Mystyle:
Laquelle j'ai ajouté du constructeur.
Ajouter textColor :
name="android:textColor"
ligne a fonctionné pour moi.<item name="android:textColorPrimary">@color/profileWhite</item>
a été réservée à l'édition de message texte couleur.Vous devez ajouter le style du constructeur de la boîte de dialogue
final ContextThemeWrapper l_contextThemeWrapper = new ContextThemeWrapper(this, R.style.myDialogStyle ); dialog = new Dialog(l_contextThemeWrapper); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog);
Voici mon Code pour thème la boîte de dialogue alerte:
Placez ce code dans styles.xml.
Dans votre java appliquer ce thème comme:
Sortie du code
J'ai changé de couleur par programmation de cette façon :
comme alertTitle, vous pouvez modifier d'autres données de cette façon (exemple suivant est pour titleDivider):
c'est en C#, mais en java, c'est la même chose.
int textColorId = getResources().getIdentifier("alertMessage", "id", "android"); TextView textColor = (TextView) alertDialog.findViewById(textColorId); if (textColor != null) { textColor.setTextColor(Color.RED); }
Bâtiment sur @general03 réponse, vous pouvez utiliser Android intégré dans le modèle pour personnaliser la boîte de dialogue rapidement. Vous pouvez trouver la boîte de dialogue thèmes sous
android.R.style.Theme_DeviceDefault_Dialogxxx
.Par exemple:
Ça dépend de combien vous voulez personnaliser la boîte de dialogue d'alerte. J'ai différentes étapes dans le but de personnaliser la boîte de dialogue d'alerte. Veuillez visiter le site: https://stackoverflow.com/a/33439849/5475941
L'utiliser dans votre Style dans votre values-v21/style.xml
HTML:
Et pour le pré sucette dispositifs mis en values/style.xml
HTML: