Kompletne rozwiązanie tego problemu będzie w następujący sposób. Na wszelki wypadek, jeśli ktoś potrzebuje fragmentów kodu, to właśnie zrobiłem.
- skopiowaniu wszystkich 8 nieokreślonych poziome kanału alfa Postępu
- edycji kanału alfa obrazu za pomocą jakiś manipulator i usuń niepotrzebne Uszczelki
- skopiował rozciągliwej XML o nazwie progress_indeterminate_horizontal_holo.xml z Android platformy
- skopiował styl widget. ProgressBar.Horizontal i jego rodzice
- Ustaw ręcznie styl i min_height w układzie
Oto 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" />
zasobów Style skopiowane do mojego lokalnego pliku stylów.
<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>
Na koniec ustaw minimalną wysokość na 4dp w moim lokalnym pliku układu.
<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" />
Jaka byłaby to odporność na zmiany w domyślnych stylach? Czy mają gwarancję, że będą wyglądać i działać tak samo przez całą wieczność, czy teoretycznie mogliby zastąpić je w dowolnym momencie czymś, w którym naciskanie go o 6 pikseli mogłoby spowodować problemy (np. Niewidzialny pasek postępu)? – Joey
To nie działa na każdym urządzeniu. W Galaxy S6, nawet z górnym marginesem "-6dp", biała przestrzeń nad paskiem postępu jest nadal widoczna. –