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
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; }
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
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
- @color/white
- @color/white
- @color/gray
- @color/gray
- @color/gray
- @color/white
- #30FFFFFF