Saltar al contenido

Material Design no aplica estilos a los cuadros de diálogo de alerta

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)

ingrese la descripción de la imagen aquí

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:
ingrese la descripción de la imagen aquí

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *