Una soluzione completa a questo problema sarebbe la seguente. Nel caso in cui qualcuno avesse bisogno di frammenti di codice, questo è quello che ho fatto.
- copiato tutti i 8 indeterminati drawable progressbar orizzontali
- modificato il drawable utilizzando alcune manipolatore dell'immagine, eliminando inutili imbottiture
- copiato il drawable XML denominato progress_indeterminate_horizontal_holo.xml dalla piattaforma Android
- copiato lo stile Widget. ProgressBar.Horizontal e i suoi genitori
- Impostare manualmente lo stile e il min_height nel layout
Ecco la progress_indeterminate_horizontal_holo.xml
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/progressbar_indeterminate_holo1" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo2" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo3" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo4" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo5" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo6" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo7" android:duration="50" />
<item android:drawable="@drawable/progressbar_indeterminate_holo8" android:duration="50" />
risorse stile copiati al mio file stili locali.
<style name="Widget">
<item name="android:textAppearance">@android:attr/textAppearance</item>
</style>
<style name="Widget.ProgressBar">
<item name="android:indeterminateOnly">true</item>
<item name="android:indeterminateBehavior">repeat</item>
<item name="android:indeterminateDuration">3500</item>
</style>
<style name="Widget.ProgressBar.Horizontal">
<item name="android:indeterminateOnly">false</item>
<item name="android:indeterminateDrawable">@drawable/progress_indeterminate_horizontal_holo</item>
</style>
Infine, impostare l'altezza minima su 4 dpi nel file di layout locale.
<ProgressBar
android:id="@+id/pb_loading"
style="@style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:indeterminate="true"
android:minHeight="4dp"
android:minWidth="48dp"
android:progressDrawable="@drawable/progress_indeterminate_horizontal_holo" />
fonte
2013-09-16 04:37:21
Quanto è robusto questo rispetto alle modifiche negli stili di default? Sono garantiti per guardare e lavorare allo stesso modo per tutta l'eternità o potrebbero teoricamente sostituirli in qualsiasi momento con qualcosa in cui spingerlo verso l'alto di 6 pixel creerebbe problemi (ad esempio una barra di avanzamento invisibile)? – Joey
Questo non funziona su tutti i dispositivi. Su Galaxy S6, anche con un margine superiore '-6dp', lo spazio bianco sopra la barra di avanzamento è ancora visibile. –