Cómo usar y diseñar nuevos AlertDialog desde la aplicación Compat 22.1 y superior

Estoy tratando de migrar del AlertDialog android predeterminado al nuevo incluido en la aplicaciónCompat-22.1 Hasta ahora entiendo que solo tiene que importar el paquete android.support.v7.app.AlertDialog para poder usarlo.

Pero, ¿cómo puedo diseñarlo? Por ejemplo, cambie los colores del botón positivo / negativo, el color del título, el color del mensaje y el color de fondo.

Al crear AlertDialog puede establecer un tema para usar.

Ejemplo: creación del cuadro de diálogo

 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 – Estilo personalizado

  

Resultado

estilo alertdialog

Editar

Para cambiar la apariencia del título, puede hacer lo siguiente. Primero agrega un nuevo estilo:

  

luego, simplemente haga referencia a este estilo en su MyAlertDialogStyle :

  

De esta manera, puede definir un textColor diferente para el mensaje a través de android:textColorPrimary y una diferente para el título a través del estilo.

Para usar un tema para toda la aplicación, y no use el segundo parámetro para darle estilo a su Diálogo

   

En mi aplicación, usando un acento de color en el tema, no se muestran los botones de alertDialog con el tema colorAccent. Tengo que agregar un estilo de diálogo en el tema.

Si desea utilizar el nuevo android.support.v7.app.AlertDialog y tener diferentes colores para los botones y también un diseño personalizado, eche un vistazo a mi 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(getString(R.string.some_dialog_title)) .setCancelable(true) .setPositiveButton(activity.getString(R.string.some_dialog_title_btn_positive), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { doSomething(); dismiss(); } }) .setNegativeButton(activity.getString(R.string.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; } 

enter image description here

Siga la respuesta de @reVerse pero en mi caso, ya tenía algunas propiedades en mi AppTheme como

  

Entonces mi diálogo se verá como
enter image description here

Lo solucioné por

1) Cambie la importación de android.app.AlertDialog a android.support.v7.app.AlertDialog
2) AppTheme 2 propiedades en AppTheme con valor nulo

  

.

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

Espero que ayude a otras personas

enter image description here

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