Android ProgressBar: cómo configurar el color secundario mediante programación
Necesito fijar el color secundario de la barra de progreso programmatically .
Sólo veo el método
- Adb push / pull con barra de progreso
- Cambiar color de la barra de progreso a través de CÓDIGO SOLAMENTE en Android
- Crear cuadro de diálogo con barra de progreso en android
- android.widget.ProgressBar no se puede convertir en android.widget.LinearLayout
- ¿Cómo cambiar el color predeterminado de la barra de progreso?
ProgressBar.setProgressDrawable(drawable)
Para establecer el color primario, pero no hay un método para establecer el color secundario.
¿Cómo puedo hacerlo?
- Android ProgressBar personalizado no está girando
- Cómo actualizar barra de progreso mediante el tema
- Cómo establecer el tema para ProgressBar indeterminista en ProgressDialog en Android
- La barra de progreso horizontal personalizada de Android de la barra dibujable se estira
- Agregar la barra de progreso en la parte inferior de una vista de lista
- Android cambia el color de la barra de progreso Horizonal
- ¿Cómo puedo mostrar un ProgressBar sólo después de un retardo mínimo?
- Imagen de animación de fondo en ProgressBar en Android?
ProgressBar.getProgressDrawable()
devuelve un LayerDrawable
en el que:
LayerDrawable progressDrawable = (LayerDrawable) getProgressDrawable(); Drawable backgroundColor = progressDrawable.getDrawable(0); Drawable secondaryColor = progressDrawable.getDrawable(1); Drawable primaryColor = progressDrawable.getDrawable(2);
Trato de modificar los colores de pizca (ejemplo):
progressDrawable.setDrawableByLayerId(progressDrawable.getId(2), new ClipDrawable(...));
Pero a veces la pantalla se bloquea, a veces se bloquean. Finalmente abandoné la búsqueda por falta de tiempo. Lo siento 🙁
Michele
El drawable que usted especifica usar setProgressDrawable
tiene fondo, primaria y secundaria drawables en él. Aquí hay un ejemplo de ProgressBar
drawable que se entrega con android:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <corners android:radius="5dip" /> <gradient ... /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="5dip" /> <gradient .../> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="5dip" /> <gradient ... /> </shape> </clip> </item> </layer-list>
Probablemente no es relevante para Michele, pero tal vez ayudará a alguien más.
ProgressBar progress = (ProgressBar) fullView.findViewById(R.id.main_progressbar); LayerDrawable progressDrawable = (LayerDrawable)progress.getProgressDrawable(); Drawable drawable = activity.getResources().getDrawable(R.drawable.WHATEVER_YOU_WANT); ClipDrawable cd = new ClipDrawable(drawable, Gravity.LEFT,ClipDrawable.HORIZONTAL); progressDrawable.setDrawableByLayerId(android.R.id.progress, cd);
Mira esto
Puede usar un xml dibujable como este para establecer el progreso
<item android:id="@android:id/background" android:drawable="@drawable/progress_bar_nor"> </item> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/progress_bar_nor"> </item> <item android:id="@android:id/progress" android:drawable="@drawable/progress_bar_sel"/>
Referir este enlace
- Uso de la API de YouTube dentro de un fragmento
- ProjectFilesBackup carpeta en el proyecto de estudio de Android para la última versión