次のテーマが定義されたAndroid(A2.2で開発)アプリがあります。
<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ドローアブルがテーマテーマによって暗黙的に設定されないのはなぜですか?