Diálogo de alerta de Android con un fondo adicional
Recientemente migré mi aplicación a Material Design y me topé con este problema con mis diálogos de alerta:
- Problema de tamaño vertical de la barra de clasificación de Android
- Cambiar el color de fondo del popupmenu al usar la biblioteca de soporte
- ¿Qué propiedad controla el fondo desplegable de Spinner?
- Android: ¿Acabo de tener un disparo por propiedad mediante el uso de temas? ¿No hay nada como CSS en Android?
- La barra de estado transparente no funciona con windowTranslucentNavigation = "false"
Estoy aplicando el estilo de diálogo como este:
<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item>
Y Theme.AlertDialog tiene este aspecto:
<style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog"> <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent_dark</item> </style>
Esto está sucediendo en mi dispositivo Kitkat y funciona bien en Lollipop. ¿Me puede ayudar a deshacerse de ese fondo exterior?
- Las preferencias dependientes muestran una fuente de color incorrecta cuando está deshabilitada
- Personalización de la barra de desplazamiento vertical de Android ScrollView
- Cómo cambiar el color del divisor PreferenceCategory en PreferenceScreen
- Cómo configurar el estilo o la fuente a texto de un TextView en android?
- Cambiar el color de línea inferior de EditText con appcompat v7
- Cambiar la casilla de verificación colorAccent en tiempo de ejecución mediante programación
- Derecho Drawable en Android. No funciona
- Estilo de búsqueda de Android
El punto es aquí:
<style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog"> ... <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent_dark</item> ... <item name="android:windowBackground">@android:color/transparent</item> ... </style>
Como Ironman me dijo aquí , asegúrese de importar la clase correcta.
Derecha: import android.support.v7.app.AlertDialog;
Mal: import android.app.AlertDialog;
Utilizar el tema en el padre
AlertDialog.THEME_DEVICE_DEFAULT_LIGHT
Añada los estilos a continuación. Tienes que personalizar el fondo también.
<item name="android:windowFrame">@null</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowTitleStyle">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:backgroundDimEnabled">false</item> <item name="android:background">@android:color/transparent</item>
Usar abajo también funciona
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:background">@android:color/transparent</item>
También puede establecer en su código mediante
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
Y esto debe ser antes de setContentView
dialog.setContentView(R.layout.dialog);
Tenía exactamente el mismo síntoma pero para mí era realmente que había utilizado los marcos estándares AlertDialog (y su constructor) en vez de android.support.v7.app.AlertDialog, cambiando para utilizar el de la biblioteca de la ayuda fijó el problema para yo.
Yo había enfrentado el mismo problema pero lo he resuelto. De esta forma, si quieres un cuadro de diálogo blanco tanto para Lollipop como para Lollipop, usa el estilo de abajo para Lollipop y usa AlertDialog.THEME_DEVICE_DEFAULT_LIGHT para bajar Lollipop.
Vea este ejemplo:
<style name="CustomDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColorPrimary">@color/black</item> <item name="android:background">@android:color/white</item> <item name="android:windowBackground">@android:color/transparent</item> </style>
Y código JAVA:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { dialogBuilder = new AlertDialog.Builder(this, R.style.CustomDialogTheme).create(); } else { dialogBuilder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT).create(); }
- Cómo imprimir / registrar la dirección de una variable en NDK
- No se puede instalar SDK Platform 4.0.3