Android: как избавиться от странной границы вокруг диалога прогресса

Я создал свой стиль для диалога прогресса, однако у него есть странные границы вокруг него.

Диалог прогресса

Вот тема:

<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> 

Любые идеи, почему такой странный фон?

Solutions Collecting From Web of "Android: как избавиться от странной границы вокруг диалога прогресса"

Чтобы удалить цветную или белую рамку вокруг диалогового окна выполнения, в диалоговом окне используется тема, которая определяет прозрачное окно.

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

При создании диалога используйте эту тему:

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

Пожалуйста, добавьте:

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

К вашей java.

Надеюсь это поможет!

Это связано с этим вопросом . Но в отличие от диалогового окна предупреждения нет поддержки AppCompat для ProgressDialog. Я не смог решить проблему, ее можно было использовать с измененным THEME_HOLO_LIGHT

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

Но вы потеряете все преимущества AppCompat (например, акцент цвета).

Создать два стиля

1) Уровень API менее равный 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) Уровень API выше 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).

 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; } } } 

Возможно, я опаздываю, чтобы ответить на этот вопрос, но, столкнувшись с такой же проблемой, я решил:
Я создал 2 стиля один для выше леденец и один для под ним.

Уровень API больше 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> 

Уровень API менее 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> 

Затем использовали этот стиль следующим образом:

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

и наконец

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

Надеюсь, это поможет вам.