首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以编程方式更改可绘制颜色

以编程方式更改可绘制颜色
EN

Stack Overflow用户
提问于 2012-07-08 00:02:02
回答 19查看 232.4K关注 0票数 179

我正在尝试通过代码更改白色标记图像上的颜色。我读到下面的代码应该会改变颜色,但我的标记仍然是白色的。

代码语言:javascript
复制
Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )

我错过了什么吗?有没有其他方法可以改变我的res文件夹中的绘图文件的颜色?

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2012-07-08 00:12:04

试试这个:

代码语言:javascript
复制
Drawable unwrappedDrawable = AppCompatResources.getDrawable(context, R.drawable.my_drawable); 
Drawable wrappedDrawable = DrawableCompat.wrap(unwrappedDrawable);
DrawableCompat.setTint(wrappedDrawable, Color.RED);    

使用DrawableCompat很重要,因为它在API22和更早版本的设备上提供了向后兼容性和错误修复。

票数 311
EN

Stack Overflow用户

发布于 2016-10-06 17:40:44

您可以在svg矢量可绘制中尝试此方法

代码语言:javascript
复制
DrawableCompat.setTint(
    DrawableCompat.wrap(myImageView.getDrawable()),
    ContextCompat.getColor(context, R.color.another_nice_color)
);
票数 149
EN

Stack Overflow用户

发布于 2016-01-21 15:11:06

您可能需要在可绘制对象上调用mutate(),否则所有图标都会受到影响。

代码语言:javascript
复制
Drawable icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_my_icon).mutate();
TypedValue typedValue = new TypedValue();
getContext().getTheme().resolveAttribute(R.attr.colorIcon, typedValue, true);
icon.setColorFilter(typedValue.data, PorterDuff.Mode.SRC_ATOP);
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11376516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档