2013-06-04 31 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