Solución:
ACTUALIZADO EN agosto de 2019 CON los componentes de Material para la biblioteca de Android:
Con los nuevos componentes de Material para la biblioteca de Android, puede utilizar el nuevo com.google.android.material.dialog.MaterialAlertDialogBuilder
clase, que se extiende desde el existente androidx.appcompat.AlertDialog.Builder
class y brinda soporte para las últimas especificaciones de Material Design.
Solo usa algo como esto:
new MaterialAlertDialogBuilder(context)
.setTitle("Dialog")
.setMessage("Lorem ipsum dolor ....")
.setPositiveButton("Ok", /* listener = */ null)
.setNegativeButton("Cancel", /* listener = */ null)
.show();
Puede personalizar los colores ampliando el ThemeOverlay.MaterialComponents.MaterialAlertDialog
estilo:
<style name="CustomMaterialDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<!-- Background Color-->
<item name="android:background">#006db3</item>
<!-- Text Color for title and message -->
<item name="colorOnSurface">@color/secondaryColor</item>
<!-- Text Color for buttons -->
<item name="colorPrimary">@color/white</item>
....
</style>
Para aplicar su estilo personalizado solo usa el constructor:
new MaterialAlertDialogBuilder(context, R.style.CustomMaterialDialog)
Para personalizar los botones, el título y el cuerpo del texto consulte esta publicación para obtener más detalles.
También puedes cambiar globalmente el estilo en el tema de tu aplicación:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
...
<item name="materialAlertDialogTheme">@style/CustomMaterialDialog</item>
</style>
CON BIBLIOTECA DE SOPORTE y TEMA APPCOMPAT:
Con el nuevo AppCompat v22.1
puede utilizar el nuevo android.support.v7.app.AlertDialog.
Solo usa un código como este:
import android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
builder.setTitle("Dialog");
builder.setMessage("Lorem ipsum dolor ....");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
Y usa un estilo como este:
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:background">#5fa3d0</item>
</style>
De lo contrario, puede definir en su tema actual:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- your style -->
<item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>
y luego en tu código:
import android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this);
Aquí el AlertDialog sobre Kitkat:
al inicializar el generador de diálogo, pase el segundo parámetro como tema. Mostrará automáticamente el diseño de materiales con API nivel 21.
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);
o,
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
AppCompat no hace eso para los diálogos (al menos todavía no)
EDITAR: lo hace ahora. asegúrese de usar android.support.v7.app.AlertDialog