Estoy usando una barra de progreso horizontal en mi aplicación de Android, y quiero cambiar su color de progreso (que es amarillo por defecto). ¿Cómo puedo hacerlo usandocode
(no XML)?
android
android-progressbar
WhiteTigerK
fuente
fuente
android:indeterminateTint="@android:color/white"
funciona solo en API> = 21Respuestas:
Lamento que no sea la respuesta, pero ¿qué impulsa el requisito de configurarlo desde el código? Y
.setProgressDrawable
debería funcionar si se define correctamentefuente
Para una barra de progreso horizontal, también puede usar un
ColorFilter
, como este:Nota: Esto modifica la apariencia de todas las barras de progreso en su aplicación. Para modificar solo una barra de progreso específica, haga esto:
Si progressBar es indeterminado, use en
getIndeterminateDrawable()
lugar degetProgressDrawable()
.Desde Lollipop (API 21) puede establecer un tinte de progreso:
fuente
getIndeterminateDrawable
si está usando un progreso indeterminado.Esto no es programático, pero creo que podría ayudar a mucha gente de todos modos.
Intenté mucho y la forma más eficiente fue agregar estas líneas a mi ProgressBar en el archivo .xml:
Entonces, al final, este código lo hizo por mí:
Esta solución funciona para API 21+
fuente
Para mi barra de progreso indeterminada (spinner) acabo de configurar un filtro de color en el dibujable. Funciona muy bien y solo una línea.
Ejemplo donde configurar el color a rojo:
fuente
android.graphics.PorterDuff.Mode.MULTIPLY
aPorterDuff.Mode.SRC_IN
y obtendrá el color hexadecimal exacto.Esta es una vieja pregunta, pero el uso del tema no se menciona aquí. Si está usando su tema predeterminado
AppCompat
, suProgressBar
color serácolorAccent
que haya definido.Cambiar
colorAccent
también cambiará elProgressBar
color de tu, pero los cambios también se reflejan en varios lugares. Entonces, si desea un color diferente solo para un específicoPregressBar
, puede hacerlo aplicando el tema a esoProgressBar
:Extienda su tema predeterminado y anule
colorAccent
Y en
ProgressBar
agregar elandroid:theme
atributo:Entonces se verá más o menos así:
Así que solo estás cambiando un
colorAccent
para tu particularProgressBar
.Nota : El uso
style
no funcionará. Solo necesitas usarandroid:theme
. Puede encontrar más uso del tema aquí: https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAHfuente
Todas las API
si usa todas las API solo cree el tema con estilo
style.xml
y uso en progreso
Nivel API 21 y superior
si se usa en API nivel 21 y superior solo use este código:
fuente
según algunas de las sugerencias, PUEDES especificar una forma y un clipdrawable con un color, luego configurarlo. Tengo esto trabajando programáticamente. Así es como lo hago ...
Primero asegúrese de importar la biblioteca dibujable.
import android.graphics.drawable.*;
Luego use el código similar al siguiente;
fuente
progress.setLevel(2500)
no funciona para mí y aparentemente su edición no fue aceptada por alguna razón. Gracias. +1.Esto funcionó para mí:
fuente
si indeterminado:
fuente
Esto funciona para mi. También funciona para la versión inferior también. Agregue esto a su syles.xml
Y úsalo así en xml
fuente
parent="ThemeOverlay.AppCompat.Light"
Hoy en día, en 2016, descubrí que algunos dispositivos anteriores a Lollipop no respetan la
colorAccent
configuración, por lo que mi solución final para todas las API ahora es la siguiente:Para los puntos de bonificación, no utiliza ningún código obsoleto. ¡Intentalo!
fuente
wrapDrawable.mutate()
conDrawableCompat.setTint(wrapDrawable.mutate(), ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
.xml
configuración y también si algo más anula elProgressBar
color.Esto es lo que hice. Trabajó.
Barra de progreso:
progressdrawable.xml:
aquí use el degradado para cambiar el color a su gusto. Y android: toDegrees = "X" aumenta el valor de X y la barra de progreso gira rápidamente. Disminuya y gire lentamente. Personalice según sus necesidades.
muestra:
fuente
Golpee el mismo problema mientras trabaja en modificar la apariencia de la barra de progreso predeterminada. Aquí hay más información que con suerte ayudará a las personas :)
a-z0-9_.
(es decir, ¡sin mayúsculas!)R.drawable.filename
myProgressBar.setProgressDrawable(...)
, sin embargo, no solo puede referirse a su diseño personalizadoR.drawable.filename
, sino que debe recuperarlo comoDrawable
:fuente
Probablemente hay una cosa que no se ha mencionado en esta respuesta:
Si su tema está heredando
Theme.AppCompat
,ProgressBar
asumirá el color que definió como"colorAccent"
en su tema.Entonces, usando ...
.. teñirá el color del ProgressBar automáticamente para el
@color/custom_color
.fuente
fuente
Puede intentar cambiar sus estilos, temas o usar android: indeterminateTint = "@ color / yourColor" en cualquier lugar que desee, pero solo hay una forma de hacerlo que funcione en cualquier versión de Android SKD:
Si su barra de progreso no es indeterminada, utilice:
Si su barra de progreso es indeterminada, utilice:
¡Es triste que Android sea un desastre!
fuente
ProgressBar
, pero para determinado pinta escala completa con color.Cómo lo hice en ProgressBar horizontal:
fuente
La solución más simple si desea cambiar el color en el archivo xml de diseño, use el código siguiente y use la propiedad indeterminateTint para el color deseado.
fuente
Esta solución funcionó para mí:
fuente
Una pequeña cosa más, la solución de tema funciona si hereda un tema base, por lo que para la aplicación compacta su tema debería ser:
Y luego configure esto en el tema de la barra de progreso
fuente
Para cambiar el color horizontal ProgressBar (en kotlin):
Para cambiar el color indeterminado de ProgressBar:
Y, finalmente, suele teñir el progreso previo a la piruleta
fuente
Estilo de material personalizado de barra de progreso horizontal:
Para cambiar el color de fondo y el progreso de la barra de progreso horizontal.
Aplíquelo a la barra de progreso configurando el atributo de estilo, para estilos de material personalizados y barra de progreso personalizada, consulte http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples
fuente
Publicado para agregar información sobre la respuesta de PaulieG , ya que ateiob me pidió que explicara algo ...
Puedo decir que hay (o al menos hubo, al momento de escribir cuando miré esa versión actual del código fuente de Android) un error / problema / optimización en el
ProgressBar
código que ignora un intento de establecer el progreso en un valor ya está enDespués de llamar
ProgressBar.setProgressDrawable()
, su barra de progreso estará en blanco (porque cambió la parte dibujable).Esto significa que debe establecer el progreso y volver a dibujarlo. Pero si solo establece el progreso en un valor preservado, no hará nada.
Primero debe establecerlo en 0, luego en el valor "antiguo" nuevamente y la barra se volverá a dibujar.
Entonces para resumir:
A continuación hay un método que tengo que hace esto:
En cuanto a la solución de HappyEngineer, creo que fue una solución similar, establecer manualmente el desplazamiento de "progreso". En cualquier caso, el código anterior debería funcionar para usted.
fuente
Utilice android.support.v4.graphics.drawable.DrawableCompat :
fuente
simplemente use:
fuente
Para un estilo horizontal ProgressBar utilizo:
Un ejemplo de llamada sería:
Si no necesita el 'progreso secundario' simplemente establezca value2 en value1.
fuente
Aplique este estilo personalizado a la barra de progreso.
@ drawable / progress.xml -
Use este tipo de imagen para la barra de progreso.
Para un mejor resultado, puede usar múltiples imágenes de progreso. Y no dude en usar imágenes, porque la plataforma Android en sí usa imágenes para la barra de progreso. El código se extrae de sdk :)
fuente
Según muhammad-adil sugerido para SDK ver 21 y superior
en XML Works para mí, es bastante fácil.
fuente
Aquí está el código para cambiar el color de ProgressBar mediante programación.
fuente
fuente