Тонировка индикатора хода Lollipop
Я нахожусь на устройстве Lollipop (MotoG 2014), я прочитал о том, что цвет индикатора выполнения, но это не работает... Я получаю цвет индикатора выполнения по умолчанию. Что мне здесь не хватает?
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTintMode="src_in"
android:indeterminate="true"
android:indeterminateTint="#f00" />
Большое спасибо.
Ответы
Ответ 1
Попробуйте изменить ProgressBar
на
<ProgressBar
android:id="@+id/view_progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="50dp"
android:layout_height="50dp"
android:indeterminate="true"
android:indeterminateTintMode="src_in"
android:indeterminateTint="@color/red"
/>
Также вы можете сделать это программно:
ProgressBar progressBar;
progressBar = (ProgressBar)findViewById(R.id.view_progress);
progressBar.getProgressDrawable().setColorFilter(Color.RED, Mode.SRC_IN);
Ссылки
Настройка цвета ProgressBar Tint
Ответ 2
Принятое решение не работало для меня на pre-Lollipop, но я нашел это решение подходящим для всех API, и, кроме того, он не использует устаревший код:
// fixes pre-Lollipop progressBar indeterminateDrawable tinting
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
Drawable wrapDrawable = DrawableCompat.wrap(mProgressBar.getIndeterminateDrawable());
DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
mProgressBar.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable));
} else {
mProgressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), android.R.color.holo_green_light), PorterDuff.Mode.SRC_IN);
}
Счастливое кодирование!
Ответ 3
/**change your progress drawable asrequired****/
Drawable wrapDrawable = DrawableCompat.wrap(_progress.getIndeterminateDrawable());
DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(this, R.color.colorOrange));
_progress.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable));