J'ai changé la couleur d'un titre AlertDialog en utilisant cette commande
alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>"));
Mais je veux changer la couleur de la ligne qui apparaît sous le titre; Comment puis je faire ça ?
Remarque: je ne souhaite pas utiliser de mise en page personnalisée
android
android-alertdialog
Mohammed Subhi Sheikh Quroush
la source
la source
Réponses:
Malheureusement, ce n’est pas une tâche particulièrement simple à accomplir. Dans ma réponse ici , je détaille comment ajuster la couleur d'un
ListSeparator
en vérifiant simplement le style parent utilisé par Android, en créant une nouvelle image et en créant un nouveau style basé sur l'original. Malheureusement, contrairement auListSeparator
style de 's, lesAlertDialog
thèmes sont internes et ne peuvent donc pas être référencés en tant que styles parents. Il n'y a pas de moyen facile de changer cette petite ligne bleue! Vous devez donc recourir à la création de dialogues personnalisés.Si ce n'est pas votre tasse de thé ... n'abandonnez pas! J'étais très dérangé par le fait qu'il n'y avait pas de moyen facile de le faire, j'ai donc mis en place un petit projet sur github pour créer rapidement des dialogues de style holo personnalisés (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 de passer du bleu ennuyeux à l'orange excitant!
Le projet est essentiellement un exemple d'utilisation d'un générateur de boîte de dialogue personnalisé, et dans l'exemple, j'ai créé une vue personnalisée qui semblait répondre à l'exemple d'adresse IP que vous avez donné dans votre question d'origine.
Avec
QustomDialog
, afin de créer une boîte de dialogue de base (titre, message) avec une couleur différente souhaitée pour le titre ou le séparateur, vous utilisez le code suivant:Et pour ajouter une mise en page personnalisée (par exemple, pour ajouter la petite adresse IP
EditText
), vous ajoutezau constructeur avec une mise en page que vous avez conçue (l'exemple IP peut être trouvé dans le github). J'espère que ça aide. Un grand merci à Joseph Earl et sa réponse ici .
la source
setItems
de cette boîte de dialogue personnalisée. Lorsque j'ajoute la liste, le titre est déplacé sous la liste. Comment résoudre ce problème.Couleur du séparateur:
C'est un peu un hack, mais cela fonctionne très bien pour moi et cela fonctionne sans aucune bibliothèque externe (au moins sur Android 4.4).
Vous pouvez trouver d'autres identifiants de boîte de dialogue dans le fichier alert_dialog.xml . Par exemple.
android:id/alertTitle
pour changer la couleur du titre ...MISE À JOUR: couleur du titre
Hack pour changer la couleur du titre:
la source
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
ici.DialogFragment
non-identification de la couleur du titre,android:id/alertTitle
mais je n'ai pas trouvé la bonne.NullPointerException
ausetTextColor()
vérifiez que cela vous est utile ...
vous obtenez des détails à partir du lien suivant.
http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCustomTitle%28android.view.View%29
CustomDialog.java
title.xml
la source
Cela définira la couleur du titre, de l'icône et du séparateur. Bound to change avec toute nouvelle version d'Android.
N'oubliez pas d'appeler dialog.show () avant d'appeler cette méthode.
la source
En suivant le code source de Dialog , j'ai trouvé que Title est généré dans Class
MidWindow
en gonflant ladialog_title_holo.xml
mise en page. donc l'Id demTitleView
esttitle
et l'Id du diviseur esttitleDivider
.nous pouvons accéder à l'Id de
title
simplement parandroid.R.id.title
.et accès à l'ID de
titleDivider
parResources.getSystem().getIdentifier("titleDivider","id", "android");
Le code final que j'ai utilisé pour changer la direction du titre et changer de couleur est:
la source
Si vous ne voulez pas de "bibliothèque" pour cela, vous pouvez utiliser ce hack mal:
Cela a été testé et fonctionne sur 4.x; pas testé sous, mais si ma mémoire est bonne, cela devrait fonctionner pour 2.x et 3.x
la source
Dans la classe onCreateView, je mets ceci:
colorPrimary liens vers notre fichier colors.xml qui stocke toutes les couleurs.
d.setTitle
Fournit également un moyen hacky de définir la couleur du titre.la source
Si vous créez une mise en page personnalisée pour la boîte de dialogue d'alerte
alors vous pouvez ajouter comme ceci facilement pour changer la couleur
la source
Si vous utilisez une mise en page de titre personnalisée, vous pouvez l'utiliser comme
alertDialog.setCustomTitle(customTitle);
Exemple
Sur l'interface utilisateur, utilisez une boîte de dialogue comme:
customtitlebar.xml
la source
Voici une autre solution (basée sur les réponses suggérées) qui gère le style des boîtes de dialogue dans une classe sans avoir à se soucier de l'état de la boîte de dialogue lorsque vous modifiez le style - la boîte de dialogue peut être déjà affichée ou simplement initialisée.
Exemple d'utilisation:
La mise en oeuvre:
la source
Poursuivant cette réponse: https://stackoverflow.com/a/15285514/1865860 , j'ai forké le joli repo github de @ daniel-smith et j'ai apporté quelques améliorations:
setItems
méthodeitems_list
setItems
méthodeslistItem
rétroaction tactilelien: https://github.com/dentex/QustomDialog
la source
Au lieu d'utiliser le séparateur dans la boîte de dialogue, utilisez la vue dans la mise en page personnalisée et définissez la mise en page comme mise en page personnalisée dans la boîte de dialogue.
custom_popup.xml:
activity.java:
la source
la source
Si vous utilisez l'extension de la boîte de dialogue, utilisez:
la source