17

我想设置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 

设置对话框主题?

我还想更改对话框背景并使角落变圆(我不想更改progressDialog内部的progressBar。这里有很多教程,但它们通常描述如何创建扩展progressDialog类的新类.

有没有更简单的方法来设置progressDialog的主题和背景颜色?
如果我不能使用它们,为什么我可以访问像 progressDialog.THEME_HOLO_DARK 这样的常量?

4

4 回答 4

30

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开始。

使用主题和styles.xml(在我看来)比在实例化ProgressDialog 时硬编码主题(即设置一次然后忘记它)更清洁和更容易维护的解决方案。

然后你可以做

new ProgressDialog(mContext);

并让您的全局主题/样式提供样式。

于 2013-07-09T17:54:34.610 回答
14

Sorry.. I'm working right now. Can't give full details. But here is the answer.

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();
于 2014-02-15T08:29:04.503 回答
0
dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.item_dialog);
于 2013-06-04T05:55:34.290 回答
0

你不能膨胀 ProgressDialog。

您可以做的是在执行异步任务时,您可以显示可以通过从 Dialog 类继承来创建的自定义对话框。

另请参阅如何为进度对话框设置背景图像?

于 2013-06-04T05:13:41.703 回答