首页 文章

VectorDrawable在API 23上无法正确呈现

提问于
浏览
17

我尽可能用VectorDrawables替换所有的图标 . 但是我注意到他们中的一些人从我创建的_680147中截取了一个截图:

enter image description here

在API 21上看起来非常好:

enter image description here

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不会抱怨任何不受支持的内容 . 我该如何找出问题所在?这是一个平台错误吗?有没有解决方法?

2 回答

  • 18

    我在API 23上只有完全相同的问题 . 我是动态设置我的ImageView源,而不是在xml中 . 我意识到问题在于我在做什么:

    Drawable show = getContext().getResources().getDrawable(resourceId);
    

    当我应该做的时候:

    Drawable show = AppCompatResources.getDrawable(getContext(), resourceId);
    

    我希望这可以帮助别人!

  • 17

    首先,我不是Android开发人员,我是设计师,协助Android Studio中的一些 生产环境 资产 .

    我们开始遇到与22个移动到24的矢量抽屉相同的问题 .

    (我更新了我的项目以使用Nexus 6 API 23并编译版本24,构建版本24,目标SDK 24.然后我的drawables似乎是关闭路径并添加类似于上面发生的填充 . )

    Tried

    我可以访问Adobe Illustrator CC(19.2.1),并且一直在探索具有笔划的对象上的各种路径选项 . 从扩展路径到填充,组合路径,制作复合路径,关闭路径等等一切都没有运气 .

    Converter Options

    在线SVG到可绘制转换器(http://inloop.github.io/svg2android/)有一个选项,“烘焙转换为路径(实验)”,我选择了它,虽然它改进了渲染,但它仍然不完美 .

    Potential Solution

    然后我再次进入Illustrator并尝试“另存为" SVG vs. "导出”作为SVG . 我在这两个设置之间存在差异,但它们确实吐出了略微不同的SVG XML数据 .

    然后我拿了新的"Save As SVG"并将其放入这个在线Drawable转换器中:http://inloop.github.io/svg2android/

    并检查了这些选项:

    • 删除没有属性的空组

    • 烘焙转化为路径(实验)

    它返回的新Drawable XML似乎正常工作和渲染 .

    我不确定这是否适用于其他具有笔触,形状和填充的矢量图形,但我想我会分享我的经验 . 这不是一个真正的解决方案,因为它似乎是新Android SDK中的一个错误,并且之前已经支持过它,但它可能是某些人可能的临时工作 .

相关问题