如何在 Android API < 21 上使用 setImageTintList()
How to use setImageTintList() on Android API < 21
imgView.setImageTintList(getResources()
.getColorStateList(R.color.my_clr_selector));
它说 'Call requires API level 21'。
如何让它在 API 21 以下的 Android 设备上运行?
我可以使用 ImageView#setColorFilter()
使其工作,但我更喜欢使用 ColorStateList
来设置色调。
您应该使用 ImageViewCompat#setImageTintList()
来实现。在 API 21+ 上,它将像您期望的那样使用 ImageView#setImageTintList()
...而在较旧的平台版本上,它将委托给 AppCompatImageView
,它提供了向后移植的实现。
ColorStateList csl = AppCompatResources.getColorStateList(context, R.color.my_color_state_list);
ImageViewCompat.setImageTintList(imageView, csl);
支持库 25.4.0 中现已提供。参见 Link
ImageViewCompat.setImageTintList(imageView, colorStateList)
ImageViewCompat.setImageTintList(ivImage, ColorStateList.valueOf(ContextCompat.getColor(context, R.color.primaryColor)));
imgView.setImageTintList(getResources()
.getColorStateList(R.color.my_clr_selector));
它说 'Call requires API level 21'。
如何让它在 API 21 以下的 Android 设备上运行?
我可以使用 ImageView#setColorFilter()
使其工作,但我更喜欢使用 ColorStateList
来设置色调。
您应该使用 ImageViewCompat#setImageTintList()
来实现。在 API 21+ 上,它将像您期望的那样使用 ImageView#setImageTintList()
...而在较旧的平台版本上,它将委托给 AppCompatImageView
,它提供了向后移植的实现。
ColorStateList csl = AppCompatResources.getColorStateList(context, R.color.my_color_state_list);
ImageViewCompat.setImageTintList(imageView, csl);
支持库 25.4.0 中现已提供。参见 Link
ImageViewCompat.setImageTintList(imageView, colorStateList)
ImageViewCompat.setImageTintList(ivImage, ColorStateList.valueOf(ContextCompat.getColor(context, R.color.primaryColor)));