2013-06-04 32 views
15

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

可用常量设置对话框主题?

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

是否有更容易设置的progressDialog?
的主题和背景颜色的方式,为什么我可以访问像progressDialog.THEME_HOLO_DARK常量,如果我不能使用他们?

+0

你不能夸大进度对话框UI,你所能做的就是一边做异步任务,则可以显示自定义对话框 – Adil

+0

阿迪尔莫卧儿请你写的答案我怎样才能使customProgressDialog只主题,背景和角落改性?我不想触摸ProgressBar ... – Marek

+0

@Marek:您无法充气进度对话框的布局(上面提到的Adil Mughal),您需要使用自定义对话框(而不是自定义进度对话框)。您可以创建一个简单的对话框并根据您的要求对其进行自定义。 –

回答

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

编辑2016分之8: 关于有关弃用主题的意见,您也可以使用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); 

,让您的全球主题/风格提供的样式。

+2

现在主题已被弃用。我们还能使用什么? – user2520215

+0

^同样的问题。没有找到任何文档 –

0
dialog = new Dialog(this); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.item_dialog); 
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(); 
+0

不适合我 –

+0

感谢ContextThemeWrapper :) –

+0

不适用于我 – Mike6679