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

ProgressBar.setProgressDrawable(drawable) 

Para establecer el color primario, pero no hay un método para establecer el color secundario.

¿Cómo puedo hacerlo?

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

https://stackoverflow.com/a/27144594/1554031

  • ¿Cómo mostrar la animación de progreso de carga para alguna imagen?
  • ¿Cómo mostrar el estado de la barra de progreso por porcentaje mientras se suben los datos de json?
  • Smooth Progress Bar Animación
  • Barra de progreso con 2 indicadores
  • show ProgressBar o Dialog de un IntentService para el progreso de la descarga
  • Cómo mostrar la barra de progreso al cargar con porcentaje
  • Posibilidad de hacer esquinas redondeadas en la progresión Progressbar personalizada ¿Dibujable?
  • Cómo cambiar dinámicamente el color del fondo de la barra de progreso android
  • ActionBar Sherlock Progressbar no se muestra en 3.1 pero en 4.0+
  • Android: Animación horizontal personalizada de la barra de progreso
  • ProgressBar no se restablece a "0" al abrir la segunda vez
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.