我正在尝试为 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));
关于Android:使用 DrawableCompat 进行着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788251/