Как изменить цвет неопределенного ProgressBar? - PullRequest
21 голосов
/ 28 апреля 2010

У меня есть индикатор выполнения в следующем стиле: style="?android:attr/android:progressBarStyleSmall"

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

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

Ответы [ 7 ]

40 голосов
/ 26 августа 2014
progressBar.getIndeterminateDrawable().setColorFilter(
            getResources().getColor(R.color.light_light_purple),
            android.graphics.PorterDuff.Mode.SRC_IN);

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

25 голосов
/ 10 ноября 2010

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

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>
10 голосов
/ 28 апреля 2010

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

Посмотрите на исходный код здесь . Этот атрибут 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. Вам нужно будет заменить Android: IndeterminateDrawable на то, что вы хотите.

3 голосов
/ 31 декабря 2012
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
    mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY);
}
2 голосов
/ 30 апреля 2010

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

stackoverflow.com / вопросы / 2020882 / как изменить прогресс-бары-прогресс-цвет-в-андроиде

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

2 голосов
/ 28 апреля 2010

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

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

1 голос
/ 24 февраля 2011

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

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

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

...