He configurado Horizontal ProgressBar
.
Me gustaría cambiar el color del progreso a amarillo.
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="80dip"
android:layout_height="20dip"
android:focusable="false"
style="?android:attr/progressBarStyleHorizontal" />
El problema es que el color del progreso es diferente en diferentes dispositivos. Entonces, quiero que arregle el color del progreso.
android
android-progressbar
Nishant Shah
fuente
fuente
Respuestas:
Copié esto de una de mis aplicaciones, por lo que es probable que haya algunos atributos adicionales, pero debería darle la idea. Esto es del diseño que tiene la barra de progreso:
Luego cree un nuevo dibujo con algo similar a lo siguiente (en este caso
greenprogress.xml
):Puede cambiar los colores según sea necesario, esto le dará una barra de progreso verde.
fuente
android:id="@android:id/progress"
,android:id="@android:id/background"
yandroid:id="@android:id/secondaryProgress"
representamos.Una solución más simple:
progess_drawable_blue
fuente
Solo crea un estilo en
values/styles.xml
.Luego establece este estilo como tu
ProgressBar
tema.y no importa que tu barra de progreso sea horizontal o circular. Eso es todo.
fuente
Si solo desea cambiar el color de la barra de progreso, simplemente puede usar un filtro de color en el método onCreate () de su Actividad:
Idea de aquí .
Solo necesita hacer esto para las versiones previas a la piruleta. En Lollipop puedes usar el atributo de estilo colorAccent.
fuente
SeekBar
que es lo mismo, sólo tiene que añadir a la API 16:seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
. Esto cambiará el color de ese pulgar redondo.setColorFilter()
directamente a un dibujable se aplicará el color en todas partes. Puesto que esto es lo que no necesito, me acaba de llamarmutate()
a laDrawable
(es decir, comoseekBar.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
para API nivel 21 o superior solo use
fuente
Hay 3 formas de resolver esta pregunta:
En particular, hay mucha confusión en torno al # 2 y # 3, como se ve en los comentarios a la respuesta de amfcosta. Esa respuesta arrojará resultados de color impredecibles en cualquier momento que desee establecer la barra de progreso en cualquier cosa, excepto los colores primarios, ya que solo modifica el color de fondo, y el área de "clip" de la barra de progreso real seguirá siendo una superposición amarilla con opacidad reducida. Por ejemplo, el uso de ese método para establecer el fondo en púrpura oscuro dará como resultado un color de "clip" de la barra de progreso de un color rosado loco resultante de la mezcla de púrpura oscuro y amarillo a través de alfa reducido.
De todos modos, Ryan responde # 1 perfectamente y Štarke responde la mayor parte de # 3, pero para aquellos que buscan una solución completa para # 2 y # 3:
Cómo ajustar el color de la barra de progreso mediante programación, pero elegir el color de un color predeterminado declarado en XML
res / drawable / my_progressbar.xml :
Cree este archivo pero cambie los colores en my_progress y my_secondsProgress:
(NOTA: Esta es solo una copia del archivo XML real que define la barra de progreso del SDK de Android predeterminado, pero he cambiado los ID y los colores. El original se llama progress_horizontal)
En tu Java :
Cómo ajustar el color de la barra de progreso mediante programación y también crear el color mediante programación
EDITAR: encontré el tiempo para resolver esto correctamente. Mi respuesta anterior dejó esto un poco ambiguo.
Un ProgressBar se compone como 3 Drawables en un LayerDrawable.
En el siguiente ejemplo, cambiaré el color de la barra de progreso principal a cian.
Ese ejemplo lo configuró en un color sólido. Puede establecerlo en un color degradado reemplazando
con
Salud.
-Lanza
fuente
ViewUtils
con una referencia aContext
, por lo que no necesito pasar unContext
al llamarconvertDpToPixel()
Si está en el nivel de API 21 o superior, puede usar estos atributos XML:
fuente
La solución más simple que descubrí es algo como esto:
Ponga lo anterior en el
styles.xml
archivo debajo de lares > values
carpeta.NOTA: Si usa cualquier otro color de acento, entonces las soluciones anteriores deberían ser buenas.
API 21 o superior
fuente
fuente
Para cualquiera que busque cómo hacerlo programáticamente:
Establecer identificadores en elementos dibujables es crucial y se encarga de preservar los límites y la barra de estado de progreso real
fuente
Ustedes realmente me están dando dolor de cabeza. Lo que puede hacer es hacer que su lista de capas se pueda dibujar a través de xml primero (es decir, un fondo como la primera capa, un dibujo que represente el progreso secundario como la segunda capa y otro dibujable que represente el progreso primario como la última capa), luego cambie el color en el código haciendo lo siguiente:
Este método le dará la mejor flexibilidad para que la medición de su dibujo original se declare en el xml, SIN MODIFICAR SU ESTRUCTURA DESPUÉS, especialmente si necesita tener la carpeta de la pantalla del archivo xml específica, luego solo modifique SOLO EL COLOR a través de código. Sin volver a crear una instancia de un nuevo ShapeDrawable desde cero.
fuente
El color de ProgressBar se puede cambiar de la siguiente manera:
/res/values/colors.xml
/res/values/styles.xml
onCreate:
fuente
Cree un recurso dibujable que fondo necesita, en mi caso lo llamé bg_custom_progressbar.xml
Luego use este fondo personalizado como
Funciona bien para mi
fuente
En xml:
ViewModel:
fuente
Con la Biblioteca de componentes de material puede usar el
ProgressIndicator
con elapp:indicatorColor
atributo para cambiar el color:Nota : requiere al menos la versión
1.3.0-alpha01
.Con el
ProgressBar
puede anular el color usando:con:
fuente
Si desea establecer el color de progreso primario y secundario en la barra de progreso horizontal mediante programación en Android, use el fragmento a continuación
fuente