我用来从 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来说都可以,但都不适用于图片绘图。正如某些人所建议的那样,替换setImageDrawable
为setBackgroundDrawable
根本不会呈现可绘制对象。我在 Android 1.6、2.3、4.0 上运行代码,没有区别。我已经检查了 SVG 库的来源,它在任何时候都不会触及颜色过滤器。我究竟做错了什么?某些类型的drawables不能着色吗?