pie - Cómo cambiar el color de ProgressBar indeterminado de Android?
android pie (7)
Estoy buscando algo muy obvio (¡en otros idiomas!) ¡Y eso me vuelve loco!
Me gustaría saber cómo puedo cambiar el color de ProgressBar indeterminado de la base de color blanco / gris a negro. Cuando cambio el dibujo indeterminado, obtengo una imagen estática en lugar de una barra de progreso animada en movimiento. ¿Hay alguna forma de hacerlo simplemente en xml?
Gracias !
Para API de menos de 23 uso
progressBar.getIndeterminateDrawable().setColorFilter(
getResources().getColor(Your_Color),
android.graphics.PorterDuff.Mode.SRC_IN);
otro uso
progressBar.getIndeterminateDrawable().setColorFilter(
ContextCompat.getColor(context, Your_Color),
android.graphics.PorterDuff.Mode.SRC_IN);
Para obtener una ProgressBar en el tema predeterminado que se va a utilizar en blanco / fondo claro, use uno de los estilos inversos:
<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>
Por lo general, esto le dará una ProgressBar negra transparente, pero algunas instalaciones de SO utilizan activos personalizados. Si está buscando un color específico, deberá enrollar sus propias herramientas siguiendo las instrucciones proporcionadas por CommonsWare.
Realizo un proyecto de muestra y lo publico en mi blog. Por favor mira a. http://www.hrupin.com/2011/09/21/how-to-make-custom-indeterminate-progressbar-in-android-or-how-to-change-progressbar-style-or-color
Espero que te ayude
Veo que otras respuestas son bastante antiguas, para cambiar el color ProgressBar indeterminado, solo tiene que establecer los atributos android:indeterminateTint
y android:indeterminateTintMode
en su elemento ProgressBar
directamente en XML:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateTint="@color/colorPrimary"
android:indeterminateTintMode="src_in"
android:indeterminate="true" />
android:indeterminateTint
- Tint para aplicar al indicador de progreso indeterminado.
Debe ser un valor de color, en forma de
"#rgb"
,"#argb"
,"#rrggbb"
,"#aarrggbb"
, o una referencia a un recurso@color/colorPrimary
.
android:indeterminateTintMode
- Modo de fusión utilizado para aplicar el tinte del indicador de progreso.
Debe ser uno de los siguientes valores constantes:
add
,multiply
,screen
,src_atop
,src_in
osrc_over
Los métodos Getter y Setter para estos atributos son:
-
getIndeterminateTintList()
-
getIndeterminateTintMode()
-
setIndeterminateTintList(ColorStateList tint)
-
setIndeterminateTintMode(PorterDuff.Mode tintMode)
Todos ellos fueron agregados en API nivel 21
de hecho, todo lo que necesita hacer (tanto para cirle como para barra) es crear un archivo xml en drawable como se muestra a continuación ...... progress_spinner_001 apunta a cualquier imagen que desee animar y duración ... cuánto tiempo desea mostrar cada una frame for ....... y set ur android: indeterminateDrawable = filename_in_drawable ....
<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/progress_spinner_001" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_002" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_003" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_004" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_005" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_006" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_007" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_008" android:duration="300" />
</animation-list>
Es posible que necesite cambiar el tamaño de la barra de progreso para mostrarla como desee
progressBar.getIndeterminateDrawable().setColorFilter(
getResources().getColor(Your_Color),
android.graphics.PorterDuff.Mode.SRC_IN);
y reemplace Your_Color con el color deseado como: R.color.your_color_code
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background" android:drawable="@drawable/bg" />
<item android:id="@android:id/secondaryProgress" android:drawable="@drawable/secondary" />
<item android:id="@android:id/progress" android:drawable="@drawable/progress" />
</layer-list>