How to colorize SeekBar's thumb on Android?

1k views Asked by At

I use this method to change SeekBar's thumb color:

  public static void setThumbColor(final SeekBar sb, @ColorInt final int color) {
    final Drawable thumb = sb.getThumb();
    thumb.setColorFilter(color, PorterDuff.Mode.SRC_IN);
    sb.setThumb(thumb);
  }

and this code works well on Android 5.0 (Lollipop) and newer. But on Android 4.2.2 or 4.3.1 my method doesn't work, color of thumb doesn't change.

What should I do to change color of thumb on older android versions?

2

There are 2 answers

2
Abhi On BEST ANSWER

Create a new style in style.XML

<style name="SeekBarColor"
parent="Widget.AppCompat.SeekBar"> 
<item name="colorAccent">@color/your_color</item> 
</style>

Finally in the layout

  <SeekBar
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:theme="@style/SeekBarColor" />
0
Prokash Sarkar On

Try this one,

sb.getProgressDrawable().setColorFilter(getResources().getCo‌​lor(R.color.my_color‌​), PorterDuff.Mode.SRC_ATOP);

or

sb.getProgressDrawable().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);
sb.getThumb().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);