Как использовать setImageTintList () на Android API

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

Он говорит:вызов требует уровня API 21...

как я могу заставить его работать на устройствах Android ниже API 21?

Я могу заставить его работать с помощью ImageView#setColorFilter() но я предпочитаю использовать ColorStateList установить оттенком.

2 ответов


вы должны использовать ImageViewCompat#setImageTintList() для достижения этой цели. На API 21+, он будет использовать ImageView#setImageTintList() как и следовало ожидать... и в более старых версиях платформы он будет делегировать AppCompatImageView который обеспечивает backported реализацию.

ColorStateList csl = AppCompatResources.getColorStateList(context, R.color.my_color_state_list);
ImageViewCompat.setImageTintList(imageView, csl);

теперь это доступно в библиотеке поддержки 25.4.0. См.ссылке

ImageViewCompat.setImageTintList (imageView, colorStateList)