Progress Dialog aparece extrañamente en dispositivos Pre-lollipop

Mi diálogo de progreso en dispositivos pre-lollipop aparece así: Introduzca aquí la descripción de la imagen

¿Ves esa ventana doble? No tengo ni idea de por qué esto sucede.

Código

  1. Inicializando el diálogo de progreso de esta manera:

    progressDialog = new ProgressDialog(context); progressDialog.setMessage(messsage); progressDialog.setIndeterminate(true); progressDialog.setCancelable(false); 
  2. Definió un estilo como este en valores y valores-21:

 <style name="AlertDialog.Theme" parent="Theme.AppCompat.Light.Dialog"> <item name="android:textColorPrimary">@color/black</item> <item name="android:background">@color/white</item> <item name="android:textColor">@color/black</item> <item name="colorAccent">@color/orange</item> <item name="colorPrimary">@color/orange</item> <item name="colorPrimaryDark">@color/darkerorance</item> </style> 

  1. Después de una cierta búsqueda en google, agregué el estilo alerta en mi tema principal como esto:
 <item name="android:dialogTheme">@style/AlertDialog.Theme</item> <item name="dialogTheme">@style/AlertDialog.Theme</item> <item name="android:alertDialogTheme">@style/AlertDialog.Theme</item> <item name="alertDialogTheme">@style/AlertDialog.Theme</item> 

Y el tema principal se extiende desde Theme.AppCompat.Light.NoActionBar .

Esto funciona muy bien en Lollipop y arriba , pero aparece como en la imagen de pre-lollipop. ¿Puede alguien ayudar aquí y decirme qué estoy haciendo mal?

4 Solutions collect form web for “Progress Dialog aparece extrañamente en dispositivos Pre-lollipop”

Mi solución fue crear un tema y un estilo separados para pre-Lollipop con el parámetro android:windowBackground como transparente. Esto quita el segundo fondo en la parte posterior.

 <style name="AppCompatAlertDialogStyleNoWindow" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:windowBackground">@color/transparent</item> </style> 

A continuación, agregue este estilo como el android:alertDialogTheme para el tema pre-Lollipop.

Estoy un poco tarde de responder, pero esto es cómo he conseguido alrededor de resolverlo.
He creado un v-14 styles.xml y definido un estilo como se muestra a continuación

Values-v14 / styles.xml

 <style name="AlertDialog.Holo" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:textColorPrimary">@color/black</item> <item name="android:textColor">@color/black</item> <item name="android:textAppearance">@style/Helvetica.Regular</item> <item name="android:windowTitleStyle">@style/DialogTitleStyle</item> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style> 

PS – textAppearance y windowTitleStyle son estilos que había creado para las fuentes personalizadas.

El estilo de diálogo de alerta regular (values ​​/ styles.xml) utilizado es:

 <style name="AlertDialog.Theme" parent="Theme.AppCompat.Light.Dialog"> <item name="android:textColorPrimary">@color/black</item> <item name="android:textColor">@color/black</item> <item name="colorAccent">@color/zifycolor</item> <item name="colorPrimary">@color/zifycolor</item> <item name="colorPrimaryDark">@color/zifycolorDarker</item> <item name="android:windowTitleStyle">@style/DialogTitleStyle</item> <item name="buttonBarButtonStyle">@style/AlertDialogButtonStyle</item> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> 

Finalmente para mostrar un diálogo de progreso:

 /** * Create a progress dialog. The appropriate theme gets applied. * * @param context valid context with a window * @param messsage message to show * @return {@code ProgressDialog} instance */ public static ProgressDialog createProgressDialog(@NonNull final Context context, @NonNull String messsage) { ProgressDialog progressDialog; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) progressDialog = new ProgressDialog(context, R.style.AlertDialog_Theme); else progressDialog = new ProgressDialog(context, R.style.AlertDialog_Holo); progressDialog.setMessage(messsage); progressDialog.setCancelable(false); return progressDialog; } 

¡Hasta ahora funciona muy bien! Espero que ayude a alguien.

No estilo de los diálogos, si desea utilizar estilos de material en dispositivos pre lolipop, a continuación, hacer uso de las bibliotecas

Ejemplo

Es muy fácil de usar.

Su respuesta no está funcionando para pre-Lollipop (probado en la API 19). Pero encuentro solución: necesitas usar android.support.v7.app.AlertDialog (en la configuración de importación)

  • ¿Por qué el fondo de ProgressDialog no se establece en el transparente?
  • Evitar que ProgressDialog sea rechazado por onClick
  • Operaciones largas en la actividad onCreate ()
  • Android: Crash en rotación, horizontal a vertical
  • Uso de ProgressDialog android personalizado
  • Mostrar el diálogo de progreso sin texto Android
  • ¿Cómo mostrar el diálogo de progreso en Android?
  • Android - ¿Cómo hacer un diálogo de progreso incrustado en la interfaz de usuario?
  • Actividad ha filtrado ventana com.android.internal.policy.impl.PhoneWindow$DecorView@46029dd0 que fue agregado originalmente aquí
  • Evitar que ProgressDialog sea rechazado cuando hago clic en el botón de búsqueda (Android)
  • Despedir Progress Dialog
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.