imgView.setImageTintList(getResources() .getColorStateList(R.color.my_clr_selector));
它显示“调用需要API级别21”。如何让它在API 21以下的Android设备上运行?我可以通过使用ImageView#setColorFilter()使它工作,但我更喜欢使用ColorStateList来设置色调。
ImageView#setColorFilter()
ColorStateList
6yt4nkrj1#
你应该使用ImageViewCompat#setImageTintList()来实现这一点。在API 21+上,它将使用ImageView#setImageTintList(),正如你所期望的那样...在旧的平台版本上,它将委托给AppCompatImageView,后者提供了一个后移植的实现。
ImageViewCompat#setImageTintList()
ImageView#setImageTintList()
AppCompatImageView
ColorStateList csl = AppCompatResources.getColorStateList(context, R.color.my_color_state_list); ImageViewCompat.setImageTintList(imageView, csl);
4dc9hkyq2#
现在支持库25.4.0中提供了此功能。请参见Link图像视图兼容性设置图像色调列表(图像视图,颜色状态列表)
wsewodh23#
int colorInt = ContextCompat.getColor(context, R.color.primaryColor); ImageViewCompat.setImageTintList(ivImage, ColorStateList.valueOf(colorInt));
3条答案
按热度按时间6yt4nkrj1#
你应该使用
ImageViewCompat#setImageTintList()
来实现这一点。在API 21+上,它将使用ImageView#setImageTintList()
,正如你所期望的那样...在旧的平台版本上,它将委托给AppCompatImageView
,后者提供了一个后移植的实现。4dc9hkyq2#
现在支持库25.4.0中提供了此功能。请参见Link
图像视图兼容性设置图像色调列表(图像视图,颜色状态列表)
wsewodh23#