it-swarm.com.ru

Леденец Прогресс Бар Тонировка

Я нахожусь на устройстве 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" />

Большое спасибо.

21
Jumpa

Принятое решение не работало для меня на 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);
}

Удачного кодирования!

32
Henrique de Sousa

Попробуйте изменить 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

57
Skizo-ozᴉʞS

Чтобы избежать окрашивания фона ProgressBar, вы должны получить ссылку на точный точечный рисунок из внутренней ProgressBarLayerDrawable. Это хакерский способ сделать это, но это работает.

LayerDrawable layerDrawable = (LayerDrawable) progressBar.getProgressDrawable();
Drawable drawable = layerDrawable.getDrawable(2); // The progress bitmap
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
2
Miltos
/**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));
0
DeepakPanwar