Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use setImageTintList() on Android API < 21

imgView.setImageTintList(getResources()
      .getColorStateList(R.color.my_clr_selector));

It says 'Call requires API level 21'.

How can I make it work on Android devices below API 21?

I can make it work by using ImageView#setColorFilter() but I prefer to use a ColorStateList to set tint.

like image 602
Gayan Weerakutti Avatar asked Sep 11 '16 14:09

Gayan Weerakutti


2 Answers

You should use ImageViewCompat#setImageTintList() to achieve this. On API 21+, it will use ImageView#setImageTintList() as you would expect... and on older platform versions, it will delegate to AppCompatImageView which provides a backported implementation.

ColorStateList csl = AppCompatResources.getColorStateList(context, R.color.my_color_state_list);
ImageViewCompat.setImageTintList(imageView, csl);
like image 77
Alex Lockwood Avatar answered Nov 18 '22 08:11

Alex Lockwood


This is now available in Support Library 25.4.0. See Link

ImageViewCompat.setImageTintList(imageView, colorStateList)

like image 5
Pradip Vaghasiya Avatar answered Nov 18 '22 08:11

Pradip Vaghasiya