Как изменить цвет неопределенного ProgressBar?

У меня есть progressbar со следующим стилем: style="?android:attr/android:progressBarStyleSmall"

К сожалению, бар почти белый и в моем случае отображается на белом фоне. Из-за этого индикатор прогресса почти невидим.

Как изменить цвет панели выполнения? Темно-серый был бы велик.

Solutions Collecting From Web of "Как изменить цвет неопределенного ProgressBar?"

Причина, по которой бар имеет этот цвет, – это стиль, который вы выбрали. Это фиксированный стиль и использует системные темы для создания элементов пользовательского интерфейса.

Посмотрите на исходный код. Этот атрибут progressBarStyleSmall использует указанные здесь стили.

 <style name="Widget.ProgressBar.Small"> <item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item> <item name="android:minWidth">16dip</item> <item name="android:maxWidth">16dip</item> <item name="android:minHeight">16dip</item> <item name="android:maxHeight">16dip</item> </style> 

Просто создайте пользовательский стиль, следуя примеру исходного кода Android. Вам нужно будет заменить андроид: indeterminateDrawable на то, что вы хотите.

 progressBar.getIndeterminateDrawable().setColorFilter( getResources().getColor(R.color.light_light_purple), android.graphics.PorterDuff.Mode.SRC_IN); 

Этот код изменяет по умолчанию холодный цвет inderminate на собственный цвет. Определите свой цветовой код и замените R.color.light_light_purple на R.color.your_color_code .

Чтобы получить черный ProgressBar, используйте один из обратных стилей:

 <ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/> 
 public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){ mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY); } 

Мне очень трудно было изменить цвет. Чтобы решить эту проблему, я получил код src от android и сделал свой собственный класс ProgressBar.

Не лучший ответ, но это сработало для меня.

И ответ был уже на SO:

stackoverflow.com/questions/2020882/how-to-change-progress-bars-progress-color-in-android

Вы можете просто изменить весь drawable, который отображается в панели progress с помощью атрибута android:indeterminateDrawable .

Просто примечание, чтобы использовать

 <ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> 

Или любой из инверсных индикаторов хода выполнения, вы должны установить минимальное требование к sdk для Android на уровне 4 (Android 1.6).