我尽可能用VectorDrawables替换所有图标。但是我注意到它们中的一些在API 23上无法正确渲染,颜色似乎正在流失。其中一个渲染很好。这是我创建的isolated project的屏幕截图:
在API 21上看起来非常好:
The source code of sample app is here
我在ImageView上使用AppCompat 24.0.0,app:srcCompat并设置了vectorDrawables.useSupportLibrary = true。我还尝试使用目标23的AppCompat 23.4.0。但是,如果我删除appCompat并将minSdkVersion设置为21并使用本机向量支持,则结果不会更改。 IDE不会抱怨任何不受支持的内容。我如何找出问题所在?这是一个平台错误吗?有没有解决方法?
答案 0 :(得分:27)
我在API 23上只有完全相同的问题。我是动态设置我的ImageView源,而不是在xml中。我意识到问题在于我在做什么:
Drawable show = getContext().getResources().getDrawable(resourceId);
当我应该做的时候:
Drawable show = AppCompatResources.getDrawable(getContext(), resourceId);
我希望这有助于某人!
答案 1 :(得分:18)
首先,我不是Android开发人员,我是设计师,协助Android Studio中的某些生产资产。
我们开始遇到一些问题,我们的一些矢量绘图从22个移动到24个。
(我更新了我的项目以使用Nexus 6 API 23并编译版本24,构建版本24,目标SDK 24.然后我的drawables似乎是关闭路径并添加类似于上面发生的填充。)< / em>的
<强>试过强>
我可以访问Adobe Illustrator CC(19.2.1),并且一直在探索具有笔划的对象上的各种路径选项。从扩展路径到填充,组合路径,制作复合路径,关闭路径等等一切都没有运气。
转换器选项
在线SVG到可绘制转换器(http://inloop.github.io/svg2android/)有一个选项,&#34; Bake转换为路径(实验),&#34;我选择了它,虽然它改进了渲染,但它仍然不完美。
潜在解决方案
然后我再次进入Illustrator并尝试了#34; 另存为&#34; SVG vs.&#34; Export &#34;作为SVG。我不确定Adobe Illustrator在这两个设置之间的差异,但它们确实吐出了略有不同的SVG XML数据。
然后我接受了新的&#34;另存为SVG&#34;并将其放入此在线Drawable转换器:http://inloop.github.io/svg2android/
检查了这些选项:
它返回的新Drawable XML似乎正常工作和渲染。
我不确定这是否适用于具有笔画,形状和填充的其他矢量图形,但我想我会分享我的经验。这不是一个真正的解决方案,因为它似乎是新Android SDK中的一个错误,并且之前已经支持过它,但它可能是某些人可能的临时工作。