我创建时矢量资产给出错误“ currentColor”

时间:2019-04-12 21:34:04

标签: android xml svg font-awesome

我从字体真棒下载了一个svg图标,用于android中的应用程序,当我创建矢量资产时,我导入了svg,但是当我尝试编译时,出现以下错误

  

错误:“ currentColor”与属性fillColor(attr)不兼容   颜色。

我尝试直接更改fillcolor,但是当我编译应用程序时,这将重新制作xml并再次放置“当前颜色”一词

这是矢量资产生成的xml

<vector android:autoMirrored="true" android:height="512dp"
    android:viewportHeight="512" android:viewportWidth="448"
    android:width="448dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="currentColor" android:pathData="..."/>
</vector>

我该如何解决?

3 个答案:

答案 0 :(得分:0)

我解决了这个问题,只是我使用外部编辑器修改了svg原始版本,然后再次导入

答案 1 :(得分:0)

android:fillColor必须为颜色(当前为字符串)

更改android:fillColor =“ currentColor” 为十六进制着色:

android:fillColor="#00FFFF" 

或将colors.xml引用为:

android:fillColor="@colors/colorPrimary"

或其他方式(如果设置如下,则颜色会根据主题而改变):

android:fillColor="?colorPrimary"

答案 2 :(得分:0)

从真棒字体下载的

.svg文件的颜色设置为“ currentColor”。创建矢量素材时,android从原始文件中导入颜色。每次android构建项目时,它都会接缝以确保两个文件匹配,并替换两个文件之间的所有不一致之处。

因此,要更改.xml资源文件中的颜色,您需要更改原始文件中的颜色。可以通过使用另一个应用程序对其进行编辑来完成。或者更简单地说,您可以在文本编辑器中打开.svg文件,然后以这种方式进行更改。


这是从真棒字体下载的示例.svg文件。要将其用作android中的矢量资产,只需将fill="currentColor"更改为任何有效的十六进制颜色字符串,例如fill="#000000"

<svg aria-hidden="true"
     focusable="false"
     data-prefix="fab"
     data-icon="font-awesome-flag"
     class="svg-inline--fa fa-font-awesome-flag fa-w-14"
     role="img" xmlns="http://www.w3.org/2000/svg"
     viewBox="0 0 448 512">

    <path fill="currentColor"
          d="M444.373 359.424c0 7.168-6.144 10.24-13.312 13.312-28.672 12.288-59.392 23.552-92.16 23.552-46.08 0-67.584-28.672-122.88-28.672-39.936 0-81.92 14.336-115.712 29.696-2.048 1.024-4.096 1.024-6.144 2.048v77.824c0 21.405-16.122 34.816-33.792 34.816-19.456 0-34.816-15.36-34.816-34.816V102.4C12.245 92.16 3.029 75.776 3.029 57.344 3.029 25.6 28.629 0 60.373 0s57.344 25.6 57.344 57.344c0 18.432-8.192 34.816-22.528 45.056v31.744c4.124-1.374 58.768-28.672 114.688-28.672 65.27 0 97.676 27.648 126.976 27.648 38.912 0 81.92-27.648 92.16-27.648 8.192 0 15.36 6.144 15.36 13.312v240.64z">
    </path>
</svg>

编辑:我做了一些其他测试,更改了原始.svg文件后,Android在构建时未更新.xml资源文件。另外,此文件中的颜色值也不重要,因为您可以在布局文件中或动态更改它。