进度对话框在 Lollipop Devices 上有白色背景,
Progress dialogue has white background on Lollipop Devices ,
我正在 Android 5.0 上迁移我的应用程序,即 Lollipop 设备,我有关于进度对话框的问题,它在 pre lollipop 设备上运行完美,但在 lollipop 上它有白色背景,如图所示
但在前棒棒糖设备中它是透明背景
下面是我的代码:
progress.xml 布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent" >
<ProgressBar
android:id="@+id/progressBar3"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_centerHorizontal="true"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/myprogress"
android:minHeight="48dp" />
</RelativeLayout>
我的progress.xml 可绘制
<shape
android:shape="oval"
android:useLevel="false" >
<size
android:height="48dip"
android:width="48dip" />
<gradient
android:centerColor="#ff001100"
android:centerY="0.50"
android:endColor="#ffffffff"
android:startColor="#ff000000"
android:type="sweep"
android:useLevel="false" />
</shape>
在Java中我是这样使用的
public ProgressDialog mProgressDialog;
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.cancel();
}
mProgressDialog = new ProgressDialog(context);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
mProgressDialog.setContentView(R.layout.progress);
我在本教程的帮助下解决了这个问题
http://www.techrepublic.com/blog/software-engineer/create-a-transparent-progress-dialog-on-android/
我只是将我的可绘制对象传递到这段代码中
mProgressDialog = new TransparentProgressDialog(context, **R.drawable.progress**);
mProgressDialog.setCancelable(false);
其余代码同本例
看来您现在有了解决方案,但如果其他人遇到类似问题;我发现在构造函数中覆盖 ProgressDialog 的主题对我有用。类似于:
mProgressDialog = new ProgressDialog(context, ProgressDialog.THEME_HOLO_LIGHT);
问题是棒棒糖上的白色背景。
两种解决方案之一(虽然两者相同):
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
或
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
您还可以创建样式并将样式分配给对话框:
ProgressDialog dialog = new ProgressDialog(context, R.style.ProgressDialogStyle);
风格(在style.xml):
<style name="ProgressDialogStyle" parent="android:Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@color/color_transparent</item>
</style>
我正在 Android 5.0 上迁移我的应用程序,即 Lollipop 设备,我有关于进度对话框的问题,它在 pre lollipop 设备上运行完美,但在 lollipop 上它有白色背景,如图所示
但在前棒棒糖设备中它是透明背景
下面是我的代码:
progress.xml 布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent" >
<ProgressBar
android:id="@+id/progressBar3"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_centerHorizontal="true"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/myprogress"
android:minHeight="48dp" />
</RelativeLayout>
我的progress.xml 可绘制
<shape
android:shape="oval"
android:useLevel="false" >
<size
android:height="48dip"
android:width="48dip" />
<gradient
android:centerColor="#ff001100"
android:centerY="0.50"
android:endColor="#ffffffff"
android:startColor="#ff000000"
android:type="sweep"
android:useLevel="false" />
</shape>
在Java中我是这样使用的
public ProgressDialog mProgressDialog;
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.cancel();
}
mProgressDialog = new ProgressDialog(context);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
mProgressDialog.setContentView(R.layout.progress);
我在本教程的帮助下解决了这个问题 http://www.techrepublic.com/blog/software-engineer/create-a-transparent-progress-dialog-on-android/
我只是将我的可绘制对象传递到这段代码中
mProgressDialog = new TransparentProgressDialog(context, **R.drawable.progress**);
mProgressDialog.setCancelable(false);
其余代码同本例
看来您现在有了解决方案,但如果其他人遇到类似问题;我发现在构造函数中覆盖 ProgressDialog 的主题对我有用。类似于:
mProgressDialog = new ProgressDialog(context, ProgressDialog.THEME_HOLO_LIGHT);
问题是棒棒糖上的白色背景。
两种解决方案之一(虽然两者相同):
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
或
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
您还可以创建样式并将样式分配给对话框:
ProgressDialog dialog = new ProgressDialog(context, R.style.ProgressDialogStyle);
风格(在style.xml):
<style name="ProgressDialogStyle" parent="android:Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@color/color_transparent</item>
</style>