我有一个Android(在A2.2上开发)应用程序,定义了以下主题:
<style name="ProgressBar"> parent="@android:style/Widget.ProgressBar">
<item name="android:indeterminateDrawable">@drawable/progress_medium</item>
</style>
<style name="AlertDialog" parent="@android:style/AlertDialog">
<item name="android:fullDark">@drawable/bgr_alert</item>
</style>
<style name="MyTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:alertDialogStyle">@style/AlertDialog</item>
<item name="android:progressBarStyle">@style/ProgressBar</item>
</style>
其中'progress_medium'drawable是我的自定义(蓝色)进度条,'bgr_alert'是自定义(白色)背景。
当我显示对话框时(应用程序的主题是'MyTheme')
@Override
protected Dialog onCreateDialog(int id) {
progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
return progressDialog;
}
显示的对话框包含自定义背景(白色),但不确定的progressBar不可见。
另一方面,如果我手动设置可绘制的进度:
progressDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.progress_medium));
一切都很完美 - 自定义背景和自定义进度可绘制。
任何提示,为什么progressBar drawable不是由主题主题隐式设置的?
答案 0 :(得分:14)
好的,我得到了答案。问题是Android的progress_dialog.xml布局包含ProgressBar的显式样式:
<ProgressBar android:id="@android:id/progress"
style="@android:style/Widget.ProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="10000"
android:layout_marginRight="12dip" />
所以我必须进行手动设置(如上所述)或完全自定义对话框。
答案 1 :(得分:0)
我遇到了这个问题,很难找到解决方案。
我认为您正在使用 MyTheme android:background:
<style name="MyTheme">
<item name="android:background">@color/white_color</item>
.....
<item name=".....">value</item>
</style>
我犯了同样的错误,我们应该使用 android:windowBackground 并给它一个颜色或一个drawable。这样,对话框不会受到主题背景的影响。
请告诉我此解决方案是否适合您!