Android: Cómo deshacerse de la frontera extraña alrededor del diálogo de progreso

He hecho mi estilo de encargo para el diálogo del progreso, sin embargo tiene bordes extraños alrededor de él.

Diálogo de progreso

Aquí está el tema:

<style name="AppTheme.Dialog" parent="Theme.AppCompat.Light.Dialog"> <item name="colorAccent">@android:color/white</item> <item name="android:textColorPrimary">@android:color/white</item> <item name="android:background">@color/colorPrimaryDark</item> <item name="android:popupBackground">@null</item> </style> 

¿Alguna idea de por qué hay un fondo tan extraño?

Para eliminar el borde de color o blanco alrededor del diálogo de progreso, el diálogo utiliza un tema que define una ventana transparente.

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

Al crear el diálogo utilice este tema:

 new ProgressDialog(MyActivity.this, R.style.MyDialogTheme); 

Por favor añadir:

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

A su java.

¡Espero que esto ayude!

Está relacionado con esta pregunta . Pero en contrario al diálogo de alerta no hay soporte AppCompat a ProgressDialog. No logré resolver el problema, es posible usar el THEME_HOLO_LIGHT

 ProgressDialog dialog= new ProgressDialog(this,ProgressDialog.THEME_HOLO_LIGHT); 

Pero pierde todos los beneficios de AppCompat (como acento de color).

Crear dos estilos

1) Nivel API menor que igual 19

  <style name="AppAlertTheme19" parent="Theme.AppCompat.Light.Dialog"> <item name="colorAccent">@color/btngreen</item> <item name="android:textColorPrimary">@color/transparent</item> <item name="android:background">@color/transparent</item> <item name="android:windowBackground">@color/transparent</item> <item name="android:popupBackground">@null</item> </style> 

2) Nivel API superior a 19

 <style name="AppAlertTheme" parent="Theme.AppCompat.Light.Dialog"> <item name="colorAccent">@color/btngreen</item> <item name="android:textColorPrimary">@color/transparent</item> <item name="android:background">@color/white</item> <item name="android:windowBackground">@color/transparent</item> <item name="android:popupBackground">@null</item> </style> 

3) y init vista de progreso como este

 public class ProgressDialogCustom extends ProgressDialog { public ProgressDialogCustom(Context context) { super(context, getStyle()); setMessage("Please Wait ..."); setCancelable(false); } private static int getStyle() { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { return R.style.AppAlertTheme; } else { return R.style.AppAlertTheme19; } } } 

Puedo llegar tarde a contestar esta pregunta, pero como estaba enfrentando el mismo problema, lo resolví de la siguiente manera:
Creé 2 estilos uno para arriba el lollipop y uno para debajo de él.

Nivel API superior a 19

 <style name="AppAlertTheme" parent="Theme.AppCompat.Light.Dialog"> <item name="colorAccent">@color/white</item> <item name="android:textColorPrimary">@color/transparent</item> <item name="android:background">@color/blue</item> <item name="android:windowBackground">@color/transparent</item> <item name="android:popupBackground">@null</item> </style> 

Nivel API inferior a 19

 <style name="AppAlertTheme_api19" parent="android:Theme.Holo.Dialog"> <item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item> <item name="android:windowBackground">@color/nlue</item> <item name="android:background">@android:color/transparent</item> <item name="android:backgroundDimEnabled">false</item> <item name="android:textColor">@color/white</item> </style> <style name="CustomAlertDialogStyle"> <item name="android:bottomBright">@android:color/transparent</item> <item name="android:bottomDark">@android:color/transparent</item> <item name="android:bottomMedium">@android:color/transparent</item> <item name="android:centerBright">@android:color/transparent</item> <item name="android:centerDark">@android:color/transparent</item> <item name="android:centerMedium">@android:color/transparent</item> <item name="android:fullBright">@android:color/transparent</item> <item name="android:fullDark">@android:color/transparent</item> <item name="android:topBright">@android:color/transparent</item> <item name="android:topDark">@android:color/transparent</item> </style> 

Luego usó este estilo de la siguiente manera:

 public int getProgressDailogStyle(){ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { return R.style.AppAlertTheme; } else { return R.style.AppAlertTheme_api19; } } 

y finalmente

  progressDialog = new ProgressDialog(context, getProgressDailogStyle()); 

Espero que esto te ayude

  • Fragmentos lentos Android TabHost lento
  • La transacción de fragmentos en los resultados de Android en la pantalla en blanco
  • Contenido de la aplicación va detrás de la barra de navegación en android L
  • ScrollView setOverScrollMode reemplazo en API <9
  • Cómo crear una animación de diapositivas en Android?
  • OnClickListener para la pantalla ENTERA
  • Creación de un menú de diálogo emergente personalizado
  • ¿Es imposible agregar varias vistas a un ScrollView?
  • SlidingUpPanelLayout no se derrumbará al reanudar después de que el sistema operativo destruya mi actividad
  • Cómo eliminar el relleno del botón de conmutación en Android
  • El relleno no funciona en algunos dispositivos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.