Come tema fissato per ProgressBar indeterministica in ProgressDialog in Android
-
09-10-2019 - |
Domanda
Ho un app Android (sviluppato su A2.2) con i seguenti tema definito:
<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>
dove 'progress_medium' disegnabile è mia abitudine (blu) progressbar e 'bgr_alert' è personalizzato (bianco) di fondo.
Quando mostro la finestra di dialogo (il tema di applicazione è 'MyTheme')
@Override
protected Dialog onCreateDialog(int id) {
progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
return progressDialog;
}
finestra di dialogo che mostra contiene fino sfondo personalizzato (bianco), ma il Progressbar indeterministica non è visibile.
D'altra parte, se ho impostato manualmente drawable corso:
progressDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.progress_medium));
tutto è perfetto -. Sfondo personalizzato e il progresso personalizzati drawable
Qualsiasi suggerimento, perché il drawable Progressbar non è impostato in modo implicito dal tema Tema?
Soluzione
Ok, ho la mia risposta. Il problema è che il layout progress_dialog.xml Android contiene stile esplicita per ProgressBar:
<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" />
Quindi devo fare sia l'impostazione manuale (come descritto sopra) o fare completamente di dialogo personalizzate.
Altri suggerimenti
Ho avuto questo problema ed è stato davvero difficile trovare la soluzione.
Credo che si sta usando, nella definizione di MyTheme Android: Priorità:
<style name="MyTheme">
<item name="android:background">@color/white_color</item>
.....
<item name=".....">value</item>
</style>
Ho fatto lo stesso errore, dovremmo usare Android: windowBackground e dargli un colore o di un disegnabile. In questo modo le finestre di dialogo non sarà influenzato dal vostro tema di sfondo.
Fammi sapere se questa soluzione funziona per voi!