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

Я ищу очень очевидную вещь (на других языках!), и это сводит меня с ума!

Я хотел бы знать, как я могу изменить неопределенный цвет ProgressBar от базового белого/серого цвета до черного? Когда я изменяю indeterminateDrawable, я получаю статическое изображение вместо движущегося анимированного progressBar. Есть ли способ сделать это просто в xml?

Спасибо!

Ответ 1

Чтобы получить ProgressBar в теме по умолчанию, которая будет использоваться на белом фоне, используйте один из обратных стилей:

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

Это обычно дает вам черный цвет на прозрачном ProgressBar, но некоторые ОС устанавливают пользовательские активы. Если вы ищете определенный цвет, вам придется сворачивать свои собственные чертежи, следуя инструкциям, предоставленным CommonsWare.

Ответ 2

progressBar.getIndeterminateDrawable().setColorFilter(
            getResources().getColor(Your_Color),
            android.graphics.PorterDuff.Mode.SRC_IN);

и замените Your_Color на нужный цвет: R.color.your_color_code

Ответ 4

Я вижу, что другие ответы довольно старые, чтобы изменить неопределенный цвет ProgressBar, вы должны просто установить android:indeterminateTint и android:indeterminateTintMode в ProgressBar элемент непосредственно в XML:

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminateTint="@color/colorPrimary"
    android:indeterminateTintMode="src_in"
    android:indeterminate="true" />

android:indeterminateTint - Оттенок для применения к неопределенному индикатору хода.

Должно быть значение цвета в форме "#rgb", "#argb", "#rrggbb", "#aarrggbb" или ссылка на ресурс @color/colorPrimary.

android:indeterminateTintMode - Режим наложения, используемый для применения оттенка индикатора хода.

Должно быть одно из следующих постоянных значений:
add, multiply, screen, src_atop, src_in или src_over

Методы Getter и Setter для этих атрибутов:

Все они были добавлены в уровень API уровня 21

Ответ 5

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/bg" />
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/secondary" />
    <item android:id="@android:id/progress" android:drawable="@drawable/progress" />
</layer-list>

Ответ 6

на самом деле все, что вам нужно сделать (для обоих элементов и бара), создает файл xml в drawable, как показано ниже...... progress_spinner_001 указывает на любое изображение, которое хотите оживить и продлить... как долго вы хотите отображать каждый кадр для....... и установите ur android: indeterminateDrawable = filename_in_drawable....

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
<item android:drawable="@drawable/progress_spinner_001" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_002" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_003" android:duration="300" />
  <item android:drawable="@drawable/progress_spinner_004" android:duration="300" />
    <item android:drawable="@drawable/progress_spinner_005" android:duration="300" />
      <item android:drawable="@drawable/progress_spinner_006" android:duration="300" />
     <item android:drawable="@drawable/progress_spinner_007" android:duration="300" />
    <item android:drawable="@drawable/progress_spinner_008" android:duration="300" />
</animation-list>

ps u может потребоваться изменить размер индикатора прогресса, чтобы показать по желанию