如何将主题设置为ProgressDialog?

我想设置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的背景并弄个圆角(我不想使用progressDialog内的progressBar进行任何更改。这里有许多教程,但是它们通常描述了如何创建扩展progressDialog类的新类。

如果我不能使用它们,为什么可以访问诸如progressDialog.THEME_HOLO_DARK之类的常量?

回答:

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();

关于不推荐使用的主题的注释,您还可以使用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);

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

以上是 如何将主题设置为ProgressDialog? 的全部内容, 来源链接: utcz.com/qa/397533.html

回到顶部