Android:使用 DrawableCompat 进行着色

标签 android compatibility tint

我正在尝试为 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/

相关文章:

android - Android 的高级动画

php - 页面无法在 IE8 中正确呈现

jvm - 为什么我们需要其他 JVM 语言

rendering - p5 中 createGraphics() 缓冲区上的 tint()

macos - 如何将色调颜色应用于 NSButton(内联样式) cocoa

Android:有什么办法可以监听传出的短信吗?

java - 如何使用 id sqlite 获取一行?

java - 调整文本大小以适应 Android 中的按钮

internet-explorer-8 - IE8 无法加载 "Compatibility View."中的 JavaScript 文件

c# - 我如何在 XNA 中将 sprite 着色为白色?