Por defecto, la barra de progreso tiene un cierto relleno encima y debajo de la barra. ¿Hay alguna forma de eliminar este relleno para tener la barra al final?
android
android-progressbar
Abergmeier
fuente
fuente
maxHeight
no funciona.android:minHeight="4dp"
Respuestas:
Utilizo lo siguiente como solución para este problema.
fuente
android:layout_marginTop="-6dp"
trabajó para mi. ¿Se pregunta si depende del dispositivo? Solo he probado en Xperia Z1Framelayout
(como en esta respuesta es una mejor solución y no depende del tamaño del teléfono / tipo / versión del sistemaAsí es como usé la respuesta de Juozas:
La altura de mi
ProgressBar
es 4dp. Así que creé unFrameLayout
con altura 4dp y configuré ellayout_gravity
deProgressBar
acenter
. Funciona como un encanto.fuente
Terminé usando una biblioteca personalizada para resolver este problema. La mayoría de las otras soluciones funcionan, pero los resultados no son consistentes en varios dispositivos.
Para agregar como dependencia de gradle:
Para agregar una barra de progreso sin relleno intrínseco a su diseño:
app:mpb_useIntrinsicPadding="false"
Hace el truco. Para más detalles ver la página de GitHub .fuente
Si alguien aún necesita ayuda, puede intentar esto:
Aquí, la barra de progreso está dentro de ConstraintLayout , y los atributos restrictintTop_toTopOf y restrictintBottom_toTopOf deben aplicarse al mismo elemento (en este caso, es una guía).
fuente
Es posible dibujar ProgressBar centrado verticalmente dentro de un padre que recortaría el relleno. Como ProgressBar no puede dibujarse a sí mismo más grande que el padre, debemos crear un padre grande para colocarlo dentro de una vista de recorte.
fuente
Para eliminar el relleno vertical de
ProgressBar
, puede hacerlo porProgressBar
El ejemplo contiene 1 wrap_content
ProgressBar
, 1 8dpProgressBar
, 1 100dpProgressBar
fuente
Una solución completa a este problema sería la siguiente. En caso de que alguien necesite fragmentos de código, esto es lo que hice.
Aquí está el progress_indeterminate_horizontal_holo.xml
Recursos de estilo copiados a mi archivo de estilos local.
Y finalmente, establezca la altura mínima en 4dp en mi archivo de diseño local.
fuente
<your-sdk-folder>/platforms/android-17/data/res/drawable-hdpi/
Encontré el mismo problema al usar la barra de progreso con estilo horizontal.
La causa raíz es que el dibujo de 9 parches predeterminado para la barra de progreso: (progress_bg_holo_dark.9.png) tiene algunos píxeles transparentes verticales como relleno.
La solución final que funcionó para mí: personalizar el progreso dibujable, mi código de muestra de la siguiente manera:
custom_horizontal_progressbar_drawable.xml
fragmento de diseño:
fuente
Un truco es agregar márgenes negativos a su barra de progreso.
A continuación se muestra un ejemplo del código XML, suponiendo que esté en la parte superior de la pantalla:
fuente
La respuesta de Subin parece ser la única (actualmente) que no es un hack frágil sujeto a roturas en futuras versiones de Android ProgressBar.
Pero en lugar de pasar por la molestia de dividir los recursos, modificarlos y mantenerlos indefinidamente, he optado por utilizar la biblioteca MaterialProgressBar , que lo hace por nosotros:
En build.gradle:
Ese proyecto tiene una buena demostración que muestra las diferencias entre él y el ProgressBar incorporado.
fuente
si alguien sigue buscando una solución, revise este comentario
establecer la altura mínima en 4 dp
-
fuente
Yo uso minHeight y maxHeigh. Ayuda para diferentes versiones de Api.
Necesita usar ambos. Api 23 funciona bien con
Pero las versiones inferiores de Api aumentan la altura de la barra de progreso a maxHeight en ese caso.
fuente
Intenta lo siguiente:
... y luego configure la barra de progreso según sus necesidades, ya que inicialmente mostrará una barra de tamaño medio con un tinte de progreso de color amarillo con un tinte de fondo de progreso grisáceo. Además, tenga en cuenta que no hay relleno vertical.
fuente
Úselo así, dentro de Linearlayout
fuente
agregar el android: progressDrawable a una lista de capas definida en drawable solucionó el problema para mí. Funciona enmascarando la barra de progreso en un dibujo personalizado
implementación de ejemplo descrita en https://stackoverflow.com/a/4454450/1145905
fuente
Estoy usando
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
y fue bastante fácil deshacerse de los márgenes. Ese estilo es:Acabo de anular la altura mínima / máxima:
fuente
No es necesario descargar ningún módulo nuevo o incluso colocar un FrameLayout alrededor de su barra de progreso. Todos estos son solo hacks. Solo 2 pasos:
En tu whatever.xml
progress_horizontal.xml, cambie los valores como desee.
¿No te gustan las esquinas redondeadas?
Eliminar radio de esquina
¿No te gustan los colores? Cambiar los colores, etc. ¡Listo!
En general, estos son los pasos para cambiar el código de cualquier cosa que no le guste. Simplemente encuentre el código fuente y descubra qué cambiar. Si sigue el código fuente de ProgressBar, encontrará un archivo llamado progress_horizontal.xml al que hace referencia. Básicamente cómo resuelvo todos mis problemas XML.
fuente
fuente
fuente
Simplemente haga uso de Material ProgressIndicator que no tiene margen oculto.
fuente
Una solución simple sin trucos que es compatible con cualquier versión de Android y no necesita bibliotecas externas está fingiendo
ProgressBar
con dosViews
adentroLinearLayout
. Esto es con lo que terminé. Parece bastante ordenado y este enfoque es bastante flexible: puede animarlo de manera original, agregar texto, etc.Diseño:
Código:
Resultado (con alguna elevación añadida):
fuente
La mejor solución debería ser
Sin solución y funciona como un encanto.
fuente
minHeight
mayor que 0 (digamos 32dp tal vez) predefinido. Al cambiar esta propiedad, obtienes un aspecto diferente.