support library last android android-support-library material-design appcompat

library - com.android.support:support-v4 28



El aspecto del diálogo con AppCompat-v7 22 da como resultado sombras feas en api<21 (5)

Con el nuevo AppCompat v22.1 puede usar el nuevo android.support.v7.app.AlertDialog o el nuevo AppCompatDialog

Solo use un código como este (por supuesto, en su caso, tiene que usar un diseño personalizado para tener la barra de progreso)

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>

Estoy usando AppCompat para escribir una aplicación de estilo de diseño de material. Como AppCompat no afecta a los diálogos, estoy eliminando los diálogos como tales:

styles.xml:

<style name="AppTheme.Base" parent="Theme.AppCompat"> <!-- Set AppCompat’s color theming attrs --> <item name="colorPrimary">@color/green</item> <item name="colorPrimaryDark">@color/green_darker</item> <item name="colorAccent">@color/accent</item> <item name="android:alertDialogTheme">@style/alertDialog</item> <item name="android:dialogTheme">@style/alertDialog</item> </style> <style name="alertDialog" parent="Theme.AppCompat.Dialog"> <item name="colorPrimary">@color/green</item> <item name="colorPrimaryDark">@color/green_darker</item> <item name="colorAccent">@color/accent</item> </style>

Estoy obteniendo exactamente lo que quería en Android api> = 21, pero en otros dispositivos termino con una "caja" alrededor de los diálogos.

¿Hay alguna forma de deshacerse del "cuadro" que se encuentra alrededor del cuadro de diálogo e incluso aplicar los colores y el tema del material aplicados en la api <21, de preferencia sin ninguna dependencia adicional?

Aplicación en Api <21:

Aplicación en API> = 21:


En caso de que alguien todavía esté buscando una solución simple y efectiva, simplemente agregue esta línea a su estilo "alertDialog":

<item name="android:windowBackground">@android:color/transparent</item>

PS al cambiar esta propiedad también afecta a los diálogos de PreferenceFragment en API> = 21, así que asegúrese de estar usando diferentes estilos: con bg transparente para API <21 y sin cambios para API> = 21


ProgressDialog - Trate por debajo de Android 5

dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

o

dialog.getWindow().clearFlags(LayoutParams.FLAG_DIM_BEHIND);



Tuve exactamente el mismo problema con la nueva biblioteca AppCompat 22 al usar android.support.v7.app.AlertDialog para todos mis AlertDialogs, pero las capas de fondo adicionales solo afectaron a ProgressDialogs.

Todos mis AlertDialogs con mi estilo personalizado se veían muy bien, pero el ProgressDialog tenía la extraña superposición en el fondo, como se describe en el OP.

Una opción que tenía era establecer un estilo específico cada vez que construía una Barra de progreso, pero estaba buscando una solución amplia para la aplicación.

Con la ayuda de estos dos enlaces:

Cómo diseñar AlertDialogs como un blog de Pro y Joerg Richter Pude deshacerme de la capa adicional dibujada en <21 ProgressDialogs.

El problema que encontré fue que en todas las versiones, ProgressBar dibuja su fondo en base a lo que está definido por defecto en "android: alertDialogStyle".

Así que para deshacerme de la capa extra, tuve que definir mis propios estilos y configurarlos para "android: alertDialogStyle". Al hacerlo, también estoy anulando los diseños predeterminados aplicados a ProgressDialogs.

Aquí está mi themes.xml:

<item name="android:alertDialogTheme">@style/MyAlertDialogTheme</item> <item name="alertDialogTheme">@style/MyAlertDialogTheme</item> <item name="android:alertDialogStyle">@style/MyAlertDialogStyles</item>

Y mi styles.xml:

<style name="MyAlertDialogTheme"> <item name="android:windowIsFloating">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> <item name="android:background">@color/theme_alert_dialog_background</item> <item name="colorAccent">@color/theme_accent_1</item> </style> <style name="AlertDialog"> <item name="android:fullDark">@android:color/transparent</item> <item name="android:topDark">@android:color/transparent</item> <item name="android:centerDark">@android:color/transparent</item> <item name="android:bottomDark">@android:color/transparent</item> <item name="android:fullBright">@android:color/transparent</item> <item name="android:topBright">@android:color/transparent</item> <item name="android:centerBright">@android:color/transparent</item> <item name="android:bottomBright">@android:color/transparent</item> <item name="android:bottomMedium">@android:color/transparent</item> <item name="android:centerMedium">@android:color/transparent</item> </style>