para - manual de programacion android pdf
Alinear la barra de progreso horizontal hacia arriba(eliminar el espacio) (5)
Creo que el problema es con el atributo de altura. Intenta establecer la altura de diseño en algún valor
<ProgressBar
android:id="@+id/progressBar"
android:max="100"
android:layout_width="match_parent"
android:layout_height="2dp"
style="@android:style/Widget.ProgressBar.Horizontal"
/>
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de poner una barra de progreso horizontal en la parte superior de mi marco. Pero parece que hay un relleno que simplemente no he podido eliminar. ¿Alguna ayuda?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar android:id="@+id/flv_progress_bar"
android:layout_width="fill_parent"
style="@android:style/Widget.Holo.ProgressBar.Horizontal"
android:indeterminateOnly="true"
android:layout_height="wrap_content"
android:layout_gravity="top"/>
</FrameLayout>
La respuesta de Pork''n''Bunny funcionó en los niveles de API 16 y superiores. Esta solución funcionó en todos los dispositivos. Solo presiona 6dp hacia arriba en XML.
<ProgressBar
android:id="@+id/progressbar_Horizontal"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100"
android:layout_alignParentTop="true"
android:layout_marginTop="-6dp" />
Se encontró con otra solución, ya que el dibujo funciona correctamente en la captura de pantalla. Solo empújalo 6dp hacia arriba.
mProgress = (ProgressBar) view.findViewById(R.id.fwv_progress);
mProgress.animate().withLayer().yBy(-6.0f*getResources().getDisplayMetrics().density).setDuration(0).start();
Una solución completa a este problema sería la siguiente. Por si alguien necesita fragmentos de código, esto es lo que hice.
- Copiado todos los 8 dibujables indeterminados de la barra de progreso horizontal
- Edite los objetos extraíbles utilizando algún manipulador de imágenes y elimine los rellenos innecesarios.
- Copió el XML dibujable llamado progress_indeterminate_horizontal_holo.xml desde la plataforma Android
- Copió el estilo Widget.ProgressBar.Horizontal y sus padres.
- Establecer el estilo y min_height manualmente en el diseño
Aquí está el 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" />
Recursos de estilo copiados en mi archivo de estilos local.
<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>
Y finalmente, establezca la altura mínima en 4dp en mi archivo de diseño local.
<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" />
por su aspecto, creo que está causado por la imagen utilizada en el estilo predeterminado
style="@android:style/Widget.Holo.ProgressBar.Horizontal"
(La imagen a la que me refiero es esta: @android:drawable/progress_indeterminate_horizontal_holo
y @android:drawable/progress_horizontal_holo_dark
)
Estas imágenes tienen mucho fondo de lienzo; por lo tanto, está mostrando esta brecha.
Mi recomendación:
Usa una imagen personalizada para darle estilo a tu PregressBar. Una que no tiene mucho espacio entre lienzos.