我已经为进度对话框制作了自定义样式,但它周围有奇怪的边框。
这是主题:
<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>
为什么有这么奇怪的背景?
答案 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)
创建两种风格
<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>
<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>
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());
希望这可以帮助你..