我正在尝试对 Android API 级别 21 之前的图像进行着色。我已经使用以下方法成功对项目进行了着色:
<android:tint="@color/red"/>
但是,我似乎无法弄清楚如何通过 ImageView 上的代码来做到这一点:
Drawable iconDrawable = this.mContext.getResources().getDrawable(R.drawable.somedrawable);
DrawableCompat.setTint(iconDrawable, this.mContext.getResources().getColor(R.color.red));
imageView.setImageDrawable(iconDrawable);
我尝试过设置 TintMode 但这似乎没有什么不同。我是否错误地使用了 v4 兼容性类 DrawableCompat?
如果有人需要使用DrawableCompat
的着色而不影响其他绘图,这是你如何做到的mutate()
:
Drawable drawable = getResources().getDrawable(R.drawable.some_drawable);
Drawable wrappedDrawable = DrawableCompat.wrap(drawable);
wrappedDrawable = wrappedDrawable.mutate();
DrawableCompat.setTint(wrappedDrawable, getResources().getColor(R.color.white));
可以简化为:
Drawable drawable = getResources().getDrawable(R.drawable.some_drawable);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable.mutate(), getResources().getColor(R.color.white));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)