我正在使用svgandroid
从SVG原始资源生成PictureDrawable
。但是,我似乎无法在这样创建的drawable上应用滤色器。
使用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);
没有。我尝试在DrawView上,在ImageView上(在设置drawable之后),通过XML,甚至在Drawable上将其设置为ImageView的drawable之后应用滤色器,对于PNG也可以,但是它们都不适用PictureDrawable。正如某些人所建议的那样,将setImageDrawable
替换为setBackgroundDrawable
并不能提供可绘制的内容。我在Androids 1.6,2.3,4.0上运行代码,没有区别。我检查了SVG库的来源,它在任何时候都没有触摸彩色滤镜。我究竟做错了什么?某些类型的drawables的着色不可用吗?