Подтвердить что ты не робот

Неопределенный круговой индикатор хода на андроиде белый, несмотря на цвет.

Я не могу понять, как изменить цвет индикатора неопределенного круга на API-21. Я убедился, что мой colorAccent установлен правильно. Я понимаю, что система должна брать из colorAccent и соответственно корректировать ProgressBar. Любая идея, что может пойти не так?

Приложение/SRC/основные/RES/макет-V21/fragment_story_comments.xml

<ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="visible"/>

Приложение/SRC/основные/RES/значения/themes.xml

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowNoTitle">true</item>
</style>

Приложение/SRC/Основной/RES/значения/colors.xml

<color name="colorAccent">#ff5722</color>
<color name="colorPrimary">#ff5722</color>
<color name="colorPrimaryDark">#e64a19</color>
4b9b3361

Ответ 1

Примечание. Это работает только с Android 5.0 (Lollipop) и выше, в соответствии с первоначальным запросом. Для старых версий Android вам придется заменить ProgressBar progressDrawable.

Развернувшись на ответ Лиама, мне удалось заставить эту работу работать с XML с помощью неопределенного знака Tint.

Очевидно, чтобы заставить его работать, вам нужно установить неопределенные и неопределенные флагиTintMode.

Режим для меня немного загаден. Я пробовал все из них, но получил только ожидаемые результаты с помощью src_in и src_atop. Я не знаю, что на самом деле делают эти режимы, поэтому, если кто-то может расширить это, я был бы благодарен.

В любом случае это должно работать:

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    android:indeterminateTint="#F00"
    android:indeterminateTintMode="src_in" />

Ответ 2

это работает и для более низких версий android:

if (progBar.getIndeterminateDrawable() != null) {
        progBar.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.accent), android.graphics.PorterDuff.Mode.SRC_IN);
}

Ответ 3

Мне удалось изменить цвет ProgressBar на API 21 программно с зеленого на белый следующим образом:

mProgressBar.getIndeterminateDrawable().setColorFilter(new LightingColorFilter(0xFF000000, 0xFFFFFF));

Однако я все еще не могу понять, как это сделать в XML, но, надеюсь, это поможет кому-то.

Ответ 4

Вы должны установить цвет для активированных элементов управления в своей теме:

 <item name="colorControlActivated">@color/accent</item>

Это работает только для Android 5.0 +