Comment puis-je changer la couleur de AlertDialog titre et la couleur de la ligne en dessous
J'ai changé la couleur d'un AlertDialog titre à l'aide de cette commande
alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>"));
Mais je veux changer la couleur de la ligne qui apparaissent sous le titre; comment puis-je le faire ?
Remarque: je ne veux pas utiliser une mise en page personnalisée
- est-il une raison spécifique que vous cherchez à éviter des mises en page personnalisées? Quelles sont les autres dispositions avez-vous besoin pour être satisfaits?
- Vous pouvez réellement changer la couleur de AlertDialog titre par un très simple hack. stackoverflow.com/a/21401181/855884
Vous devez vous connecter pour publier un commentaire.
Malheureusement, ce n'est pas un simple particulier de la tâche à accomplir. Dans ma réponse ici, Je détaille la façon de régler la couleur d'un
ListSeparator
par la simple vérification du style parent utilisé par Android, la création d'une nouvelle image, et la création d'un nouveau style basé sur l'original. Malheureusement, contrairement à laListSeparator
's style,AlertDialog
thèmes sont à l'intérieur, et ne peut donc pas être référencé en tant que parent styles. Il n'est pas facile à changer que peu de bleu en ligne! Ainsi, vous avez besoin de recourir à la personnalisation des boîtes de dialogue.Si ce n'est pas votre tasse de thé... n'abandonnez pas! J'ai été très perturbé qu'il n'y a pas de moyen facile de le faire alors je l'ai mis en place un petit projet sur github pour faire rapidement adaptés holo-style dialogues (en supposant que le téléphone prend en charge le style Holo). Vous pouvez trouver le projet ici: https://github.com/danoz73/QustomDialog
Il devrait facilement permettre d'aller ennuyer bleu passionnant orange!
Le projet est fondamentalement un exemple d'utilisation d'un dialogue personnalisé constructeur, et dans l'exemple j'ai créé une vue personnalisée qui semblait répondre à l'Adresse IP de l'exemple que vous donnez dans votre question initiale.
Avec
QustomDialog
, afin de créer une base de dialogue (titre, message) avec une couleur différente pour le titre ou le diviseur, vous utilisez le code suivant:Et afin d'ajouter une mise en page personnalisée (par exemple, pour ajouter la petite adresse IP
EditText
), vous ajoutezpour le constructeur avec une mise en page que vous avez créée (l'IP exemple peut être trouvé dans le github). J'espère que cette aide. Un grand merci à Joseph Comte et sa réponse ici.
setItems
dans cette boîte de dialogue personnaliser. Lorsque j'ajoute à la liste, il fait décale le titre ci-dessous la liste. Comment faire pour résoudre ce problème.Diviseur couleur:
Il s'agit d'une bidouille un peu, mais il fonctionne très bien pour moi et il fonctionne sans aucune bibliothèque externe (au moins sur Android 4.4).
Vous pouvez trouver plus de dialogue à l'ids dans alert_dialog.xml fichier. Par exemple.
android:id/alertTitle
pour changer la couleur du titre...Mise à JOUR: la couleur du Titre de la
Hack pour changer la couleur du titre:
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
ici.DialogFragment
où la couleur du titre n'a pas d'idandroid:id/alertTitle
mais je n'ai pas trouvé la bonne.NullPointerException
à lasetTextColor()
vérifier ceci est utile pour vous...
vous obtenez le détail en suivant le lien.
http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCustomTitle%28android.view.View%29
CustomDialog.java
title.xml
Cela permettra de définir la couleur du titre, icône, et diviseur. Liés à changer avec la toute nouvelle version d'Android.
N'oubliez pas d'appeler la boîte de dialogue.show() avant d'appeler cette méthode.
En suivant les Boîte de dialogue code source, j'ai trouvé que le Titre est généré dans la Classe
MidWindow
en gonflant ledialog_title_holo.xml
mise en page. si l'Id demTitleView
esttitle
et l'Id de diviseur esttitleDivider
.nous pouvons accéder à l'Id de
title
simplement parandroid.R.id.title
.et l'accès à l'Id de
titleDivider
parResources.getSystem().getIdentifier("titleDivider","id", "android");
Le dernier code que j'ai utilisé pour modifier la Direction du titre et de la modification de la couleur est:
Si vous ne voulez pas d'une "bibliothèque" pour cela, vous pouvez utiliser ce mal hack:
Cela a été testé et de travail sur 4.x; pas testé, mais si ma mémoire est bonne, il doit travailler pour les 2.x et 3.x
Si vous créez une Mise en page personnalisée de dialogue d'alerte
ensuite, vous pouvez ajouter comme ainsi facilement changer la couleur
Dans la classe onCreateView, j'ai mis ceci:
colorPrimary les liens vers notre colors.xml fichier qui stocke toutes les couleurs. Aussi
d.setTitle
fournit un hacky façon de définir le titre de la couleur.Si votre aide titre personnalisé de mise en page alors vous pouvez l'utiliser comme alertDialog.setCustomTitle(customTitle);
Par exemple
Continue à partir de cette réponse: https://stackoverflow.com/a/15285514/1865860, je bifurquais nice dépôt github de @daniel-smith et a apporté quelques améliorations:
setItems
méthodeitems_list
setItems
méthodeslistItem
le retour tactilelien: https://github.com/dentex/QustomDialog
J'ai trouvé une autre solution qui gère le style de vos boîtes de dialogue dans un seul endroit et vous n'avez pas à vous soucier lorsque vous l'appliquez - boîte de dialogue afficher/ne pas montré, ce qui peut causer une erreur (doit appeler requestFocus ou quelque chose comme ça ;P).
Exemple d'utilisation:
Mise en œuvre:
Au lieu d'utiliser diviseur dans la boîte de dialogue, utilisez la vue dans la mise en page personnalisée et définir la mise en page que la mise en page personnalisée dans la boîte de dialogue.
custom_popup.xml:
activity.java:
Dans le cas où vous utilisez l'extension de la boîte de dialogue de l'utilisation: