我想设置progressDialog的主题。要创建它,我使用以下代码:
progressDialog = ProgressDialog.show(this, "Please Wait", "Loading dictionary file....", true, false);
我不能只写
progressDialog = new ProgressDialog(...);
progressDialog.(do_sth_with_dialog);
progressDialog.show(...)
因为show()方法是静态的,我得到编译器警告。 有没有办法使用像
这样的常用常量progressDialog.THEME_HOLO_DARK
设置对话框主题?
我还想更改Dialog背景并使角落成圆形(我不想使用progressDar中的progressBar更改任何内容。这里有很多教程,但它们通常描述如何创建新的类扩展progressDialog类。
是否有更简单的方法来设置progressDialog的主题和背景颜色?
如果我不能使用它们,为什么我可以访问progressDialog.THEME_HOLO_DARK等常量?
答案 0 :(得分:28)
ProgressDialog.show()
是静态方法,因此您无法获得可以设置属性的ProgressDialog
类实例。
获取ProgressDialog
实例:
// create a ProgressDialog instance, with a specified theme:
ProgressDialog dialog = new ProgressDialog(mContext, ProgressDialog.THEME_HOLO_DARK);
// set indeterminate style
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// set title and message
dialog.setTitle("Please wait");
dialog.setMessage("Loading dictionary file...");
// and show it
dialog.show();
编辑8/2016: 关于弃用主题的注释,您也可以使用styles.xml并从基本主题继承,例如:
<style name="MyProgressDialog" parent="Theme.AppCompat.Dialog">
</style>
有关如何执行此操作的详细信息已在其他地方广泛介绍,请从https://developer.android.com/guide/topics/ui/themes.html开始。
使用themes和styles.xml(在我看来)比在实例化ProgressDialog时对主题进行硬编码更简洁,更易于维护,即设置一次并忘记它。
然后你可以做
new ProgressDialog(mContext);
让您的全局主题/风格提供样式。
答案 1 :(得分:11)
抱歉..我现在正在工作。无法提供全部细节。但这是答案。
ProgressDialog progressDialog;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
progressDialog = new ProgressDialog(new ContextThemeWrapper(context, android.R.style.Theme_Holo_Light_Dialog));
}else{
progressDialog = new ProgressDialog(context);
}
progressDialog.setMessage("Loading....");
progressDialog.show();
答案 2 :(得分:0)
你不能给ProgressDialog充气。
您可以做的是在执行异步任务时,您可以显示可以通过继承Dialog类创建的自定义对话框。
答案 3 :(得分:0)
dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.item_dialog);