J'ai de nombreuses boîtes de dialogue d'alerte dans mon application. C'est une mise en page par défaut, mais j'ajoute des boutons positifs et négatifs à la boîte de dialogue. Ainsi, les boutons obtiennent la couleur du texte par défaut d'Android 5 (vert). J'ai essayé de le changer sans succès. Une idée de comment changer cette couleur de texte?
Ma boîte de dialogue personnalisée:
public class MyCustomDialog extends AlertDialog.Builder {
public MyCustomDialog(Context context,String title,String message) {
super(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false);
TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title);
titleTextView.setText(title);
TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message);
messageTextView.setText(message);
this.setCancelable(false);
this.setView(viewDialog);
} }
Création de la boîte de dialogue:
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage);
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
...
}
}).show();
Ce bouton négatif est un bouton de dialogue par défaut et prend la couleur verte par défaut d'Android 5 Lollipop.
Merci beaucoup
android
android-layout
android-5.0-lollipop
android-alertdialog
textcolor
Développeur FOM
la source
la source
Réponses:
Vous pouvez d'abord essayer de créer l'
AlertDialog
objet, puis l'utiliser pour configurer la modification de la couleur du bouton, puis l'afficher. (Notez que surbuilder
objet au lieu d'appeler,show()
nous appelonscreate()
pour obtenir leAlertDialog
objet:La raison pour laquelle vous devez le faire
onShow()
et ne pouvez pas simplement obtenir ce bouton après avoir créé votre boîte de dialogue est que le bouton n'aurait pas encore été créé.J'ai changé
AlertDialog.BUTTON_POSITIVE
pourAlertDialog.BUTTON_NEGATIVE
refléter le changement dans votre question. Bien qu'il soit étrange que le bouton "OK" soit un bouton négatif. C'est généralement le bouton positif.la source
Voici une façon naturelle de le faire avec les styles:
Si votre
AppTheme
est hérité deTheme.MaterialComponents
, alors:Si votre
AppTheme
est hérité deTheme.AppCompat
:Utilisez votre
AlertDialogTheme
dans votreAppTheme
ou en constructeur
la source
com.google.android.material:material:1.0.0-beta01
et j'utilise Theme.MaterialComponents.Light.Dialog.AlertLa couleur des boutons et autre texte peut également être modifiée via le thème:
Le résultat:
la source
android:
pièce deandroid:alertDialogTheme
et deandroid:colorAccent
.La solution la plus simple est:
la source
AlertDialog.BUTTON_NEGATIVE
etc.Il existe deux façons de modifier la couleur du bouton de la boîte de dialogue.
Voie de base
Si vous souhaitez simplement modifier une activité, écrivez les deux lignes ci-dessous après
alertDialog.show();
conseillé
Je vous recommande d'ajouter un thème pour
AlertDialog
instyles.xml
afin que vous n'ayez pas à écrire le même code encore et encore dans chaque appel d'activité / dialogue. Vous pouvez simplement créer un style et appliquer ce thème dans la boîte de dialogue. Ainsi, chaque fois que vous souhaitez changer la couleur de la boîte AlertDialog, changez simplement la couleur dans styles.xml et toutes les boîtes de dialogue seront mises à jour dans toute l'application.Et appliquez le thème dans
AlertDialog.Builder
la source
Si vous souhaitez modifier la couleur du texte des boutons (positive, négative, neutre), ajoutez simplement à votre style de dialogue personnalisé:
Donc, votre style de dialogue doit ressembler à ceci:
la source
La couleur des boutons et autre texte peut également être modifiée en utilisant appcompat:
la source
Dans le thème / style de votre application, ajoutez les lignes suivantes:
Ajoutez ensuite les styles suivants:
L'utilisation de cette méthode rend inutile la définition du thème dans le générateur AlertDialog.
la source
Juste comme note latérale:
Les couleurs des boutons (et tout le style) dépendent également du thème actuel qui peut être assez différent lorsque vous utilisez soit
ou
(Mieux vaut utiliser le second)
la source
Voici comment procéder: Une manière simple
la source
pour moi c'était différent, j'ai utilisé un thème de bouton
et parce que
était blanc là-bas… je n'ai vu aucun texte de bouton (les boutons de dialogue sont essentiellement des boutons aussi). on y va, on l'a changé, on l'a réparé.
la source