2010-11-12 127 views
4

設置主題爲不確定的進度我有以下主題的安卓(A2.2上開發的)應用程序定義:如何ProgressDialog在Android中

<style name="ProgressBar"> parent="@android:style/Widget.ProgressBar"> 
    <item name="android:indeterminateDrawable">@drawable/progress_medium</item> 
</style> 
<style name="AlertDialog" parent="@android:style/AlertDialog"> 
    <item name="android:fullDark">@drawable/bgr_alert</item> 
</style> 
<style name="MyTheme" parent="@android:style/Theme.Light.NoTitleBar"> 
    <item name="android:alertDialogStyle">@style/AlertDialog</item> 
    <item name="android:progressBarStyle">@style/ProgressBar</item> 
</style> 

其中「progress_medium」繪製的是我的自定義(藍色)進度和'bgr_alert'是自定義(白色)背景。

當我顯示對話框(應用程序的主題是「MyTheme的」)

@Override 
protected Dialog onCreateDialog(int id) { 
    progressDialog = new ProgressDialog(this); 
    progressDialog.setCancelable(false); 
    progressDialog.setIndeterminate(true); 
    return progressDialog; 
} 

,顯示的對話框包含自定義背景(白色),但不確定的進度是不可見的。

在另一方面,如果我手動設置進度繪製:

progressDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.progress_medium)); 

一切都是完美的 - 自定義背景和定製的進步繪製。

任何提示,爲什麼progressBar drawable不是由主題主題隱式設置的?

回答

14

好的,我有我的答案。問題是,Android的progress_dialog.xml佈局包含明確的風格進度:

<ProgressBar android:id="@android:id/progress" 
    style="@android:style/Widget.ProgressBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:max="10000" 
    android:layout_marginRight="12dip" /> 

所以,我必須做任何手動設置(如上所述)或做完全自定義的對話框。

+0

請將您的答案標爲正確!謝謝你爲我省下了一段時間尋找這種情況的原因。 – 2011-04-12 12:30:31

0

我有這個問題,真的很難找到解決方案。

我認爲你正在使用,在你的定義的MyTheme的android:背景:

<style name="MyTheme"> 
    <item name="android:background">@color/white_color</item> 
    ..... 
    <item name=".....">value</item> 
</style> 

我犯同樣的錯誤,我們應該用安卓windowBackground,並給它一個顏色或一個可繪製的。這樣對話框就不會受到你主題背景的影響。

讓我知道這個解決方案是否適合你!