我从字体真棒下载了一个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>
我该如何解决?
答案 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资源文件。另外,此文件中的颜色值也不重要,因为您可以在布局文件中或动态更改它。