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?

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top