Как изменить цвет неопределенного ProgressBar?
У меня есть панель прогресса со следующим стилем: style="?android:attr/android:progressBarStyleSmall"
К сожалению, бар почти белый и в моем случае отображается на белом фоне.
Из-за этого индикатор прогресса почти невидим.
Как изменить цвет панели выполнения? Темный серый цвет будет большим.
Ответы
Ответ 1
Причина, по которой панель имеет этот цвет, связана с выбранным вами стилем. Это фиксированный стиль и использует системные темы для создания элементов пользовательского интерфейса.
Посмотрите на исходный код здесь. Этот атрибут 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 на то, что вы хотите.
Ответ 2
progressBar.getIndeterminateDrawable().setColorFilter(
getResources().getColor(R.color.light_light_purple),
android.graphics.PorterDuff.Mode.SRC_IN);
Этот код изменяет цветной заголовок inominmin по умолчанию для вашего собственного цвета.
Определите свой цветовой код и замените R.color.light_light_purple
на R.color.your_color_code
.
Ответ 3
Чтобы получить черный ProgressBar, используйте один из обратных стилей:
<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>
Ответ 4
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY);
}
Ответ 5
Мне очень тяжело было пытаться изменить его цвет. Чтобы решить эту проблему, я получил код android src и сделал свой собственный класс ProgressBar.
Не лучший ответ, но это сработало для меня.
Ответ 6
И ответ был уже на SO:
fooobar.com/questions/25865/...
Вы можете просто изменить весь drawable, который отображается в панели progress с помощью атрибута android:indeterminateDrawable
.
Ответ 7
Просто заметьте, чтобы использовать
<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
или любой из инверсных индикаторов выполнения, вы должны установить минимальное требование к sdk для Android на уровень 4 (Android 1.6).