Android:如何摆脱进度对话框周围的怪异边框

时间:2015-11-30 20:15:03

标签: android android-layout progressdialog

我已经为进度对话框制作了自定义样式,但它周围有奇怪的边框。

progress dialog

这是主题:

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

为什么有这么奇怪的背景?

5 个答案:

答案 0 :(得分:8)

要删除进度对话框周围的彩色或白色边框,对话框将使用定义透明windowBackground的主题

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

创建对话框时使用此主题:

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

答案 1 :(得分:1)

请添加:

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

到你的java。

希望这有帮助!

答案 2 :(得分:1)

它与this question有关。 但与警报对话框相反,ProgressDialog没有AppCompat支持。 我没有设法解决问题,可以使用已经删除的THEME_HOLO_LIGHT

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

但是你放弃了AppCompat的所有好处(比如颜色重音)。

答案 3 :(得分:0)

创建两种风格

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)和init这样的进度视图

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

答案 4 :(得分:0)

我可能会迟到回答这个问题,但是当我遇到同样的问题时,我解决了如下问题:
我为上面的棒棒糖创建了两个样式,在下面创建了一个样式。

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());

希望这可以帮助你..