Comment puis-je changer la couleur du texte du bouton de dialog par défaut dans Android 5

J’ai de nombreuses boîtes de dialog 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 dialog. Ainsi, les boutons obtiennent la couleur de 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 dialog personnalisée:

public class MyCustomDialog extends AlertDialog.Builder { public MyCustomDialog(Context context,Ssortingng title,Ssortingng 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 dialog:

 MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ... } }).show(); 

Ce négatif est un bouton de dialog par défaut et prend la couleur verte par défaut de Android 5 Lollipop.

Merci beaucoup

Boîte de dialogue personnalisée avec bouton vert

    Vous pouvez essayer de créer l’object AlertDialog premier, puis l’utiliser pour configurer la couleur du bouton, puis l’afficher. (Notez que sur l’object builder au lieu d’appeler show() nous appelons create() pour obtenir l’object AlertDialog :

     //1. create a dialog object 'dialog' MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ... } }).create(); //2. now setup to change color of the button dialog.setOnShowListener( new OnShowListener() { @Override public void onShow(DialogInterface arg0) { dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT); } }); dialog.show() 

    La raison pour laquelle vous devez le faire sur onShow() et ne pouvez pas simplement obtenir ce bouton après avoir créé votre boîte de dialog est que le bouton n’aurait pas encore été créé.

    J’ai changé AlertDialog.BUTTON_POSITIVE en AlertDialog.BUTTON_NEGATIVE pour 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 couleur des boutons et des autres textes peut également être modifiée via le thème:

    values-21 / styles.xml

       

    Le résultat:

    DialogueSélecteur de date

    Voici un moyen naturel de le faire à travers les styles:

        

    Définir AlertDialogTheme via cet atsortingbut dans votre AppTheme

     @style/AlertDialogTheme 

    ou via constructeur dans le new AlertDialog.Builder(context, R.style.AlertDialogTheme) constructeur new AlertDialog.Builder(context, R.style.AlertDialogTheme)

    La solution la plus simple est la suivante:

     dialog.show(); //Only after .show() was called dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(neededColor); dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(neededColor); 

    Si vous souhaitez modifier la couleur du texte des boutons (positif, négatif, neutre), ajoutez-le simplement à votre style de boîte de dialog personnalisé:

     @color/accent_color 

    Ainsi, votre style de dialog doit ressembler à ceci:

      
      

    La couleur des boutons et d’autres textes peut également être modifiée à l’aide d’appcompat:

    Il existe deux manières de modifier la couleur du bouton de la boîte de dialog.

    Manière basique

    Si vous souhaitez simplement modifier une activité, écrivez les deux lignes ci-dessous après alertDialog.show();

     alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getResources().getColor(R.color.colorPrimary)); alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(getResources().getColor(R.color.colorPrimaryDark)); 

    conseillé

    Je vous recommande d’append un thème pour AlertDialog dans styles.xml afin que vous n’ayez pas à écrire le même code encore et encore dans chaque appel d’activité / boîte de dialog. Vous pouvez simplement créer un style et appliquer ce thème dans la boîte de dialog. Donc, chaque fois que vous voulez changer la couleur de la boîte AlertDialog, changez simplement de couleur dans styles.xml et toutes les boîtes de dialog seront mises à jour dans toute l’application.

      

    Et appliquer le thème dans AlertDialog.Builder

     AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogTheme); 

    Juste comme note secondaire:

    Les couleurs des boutons (et le style entier) dépendent également du thème actuel qui peut être assez différent lorsque vous utilisez

      android.app.AlertDialog.Builder builder = new AlertDialog.Builder() 

    ou

      android.support.v7.app.AlertDialog.Builder builder = new AlertDialog.Builder() 

    (mieux vaut utiliser le second)

    pour moi c’était différent, j’ai utilisé un thème de bouton

      

    et parce que

    android: textColor

    était blanc là-bas… je n’ai vu aucun texte de bouton (les boutons de dialog sont essentiellement des boutons). on y va, on l’a changé, on l’a réparé.