Неопределенный круговой индикатор хода на андроиде белый, несмотря на цвет.
Я не могу понять, как изменить цвет индикатора неопределенного круга на 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>
Ответы
Ответ 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 +