Comment utiliser et styler de nouvelles AlertDialog à partir de appCompat 22.1 et supérieur

J’essaie de migrer de android AlertDialog par défaut vers le nouveau inclus dans appCompat-22.1 Jusqu’à présent, je comprends que vous ne devez importer que le package android.support.v7.app.AlertDialog pour pouvoir l’utiliser.

Mais comment puis-je le coiffer? Par exemple, modifiez les couleurs du bouton positif / négatif, la couleur du titre, la couleur du message et la couleur de l’arrière-plan?

Lors de la création de AlertDialog vous pouvez définir un thème à utiliser.

Exemple – Création du dialog

 AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle); builder.setTitle("AppCompatDialog"); builder.setMessage("Lorem ipsum dolor..."); builder.setPositiveButton("OK", null); builder.setNegativeButton("Cancel", null); builder.show(); 

styles.xml – Style personnalisé

  

Résultat

style alertdialog

modifier

Pour modifier l’apparence du titre, vous pouvez effectuer les opérations suivantes. Commencez par append un nouveau style:

  

Ensuite, MyAlertDialogStyle simplement référence à ce style dans votre MyAlertDialogStyle :

  

De cette façon, vous pouvez définir un textColor différent pour le message via android:textColorPrimary et un autre pour le titre via le style.

Pour utiliser un thème pour toute l’application, et n’utilisez pas le second paramètre pour définir votre style de dialog

   

Sur mon application utilisant un accent de couleur dans le thème ne montre pas les boutons de alertDialog avec le thème colorAccent Je dois append un style de dialog dans le thème.

Si vous souhaitez utiliser le nouveau android.support.v7.app.AlertDialog et avoir des couleurs différentes pour les boutons et une présentation personnalisée, consultez mon https://gist.github.com/JoachimR/6bfbc175d5c8116d411e

 @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { View v = inflater.inflate(R.layout.custom_layout, null); initDialogUi(v); final AlertDialog d = new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle) .setTitle(getSsortingng(R.ssortingng.some_dialog_title)) .setCancelable(true) .setPositiveButton(activity.getSsortingng(R.ssortingng.some_dialog_title_btn_positive), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { doSomething(); dismiss(); } }) .setNegativeButton(activity.getSsortingng(R.ssortingng.some_dialog_title_btn_negative), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dismiss(); } }) .setView(v) .create(); // change color of positive button d.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { Button b = d.getButton(DialogInterface.BUTTON_POSITIVE); b.setTextColor(getResources().getColor(R.color.colorPrimary)); } }); return d; } 

entrer la description de l'image ici

Suivez la réponse @reVerse mais dans mon cas, j’avais déjà quelques propriétés dans mon AppTheme comme

  

Donc, mon dialog ressemblera
entrer la description de l'image ici

Je l’ai résolu par

1) Modifiez l’importation de android.app.AlertDialog vers android.support.v7.app.AlertDialog
2) Je remplace 2 propriétés dans AppTheme avec une valeur nulle

  

.

 AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.MyAlertDialogStyle); 

J’espère que ça aidera un autre peuple

entrer la description de l'image ici

  @color/white @color/white @color/gray @color/gray @color/gray @color/white #30FFFFFF