6

我用来从 SVG 原始资源svgandroid生成s 。PictureDrawable但是,我似乎无法在以这种方式创建的可绘制对象上应用颜色过滤器。

使用 PNG 的旧代码

icon = getResources().getDrawable(R.drawable.ic_braille);
icon.setColorFilter(0x88880000, Mode.MULTIPLY);
((ImageView)v.findViewById(R.id.icon)).setImageDrawable(icon);

有效,但是

icon = SVGParser.getSVGFromResource(getResources(), R.raw.ic_braille).createPictureDrawable();
icon.setColorFilter(0x88880000, Mode.MULTIPLY);
((ImageView)v.findViewById(R.id.icon)).setImageDrawable(icon);

才不是。我已经尝试在Drawable上应用颜色过滤器,在ImageView上(在将drawable设置为它之后),通过XML,甚至在将它设置为ImageView的drawable之后在Drawable上应用颜色过滤器,对于PNG来说都可以,但都不适用于图片绘图。正如某些人所建议的那样,替换setImageDrawablesetBackgroundDrawable根本不会呈现可绘制对象。我在 Android 1.6、2.3、4.0 上运行代码,没有区别。我已经检查了 SVG 库的来源,它在任何时候都不会触及颜色过滤器。我究竟做错了什么?某些类型的drawables不能着色吗?

4

1 回答 1

2

使用这个 svg-android 的分支: https ://github.com/japgolly/svg-android

它支持颜色过滤器。

于 2013-01-22T07:53:30.933 回答