【问题标题】:Vector asset give error "currentColor" when i created矢量资产在我创建时给出错误“currentColor”
【发布时间】:2019-10-05 06:07:53
【问题描述】:

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

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

我尝试直接更改填充颜色,但是当我编译应用程序时,这会重新制作 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>

我该如何解决?

【问题讨论】:

    标签: android xml svg font-awesome


    【解决方案1】:

    android:fillColor 必须是 color(当前为字符串)

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

    android:fillColor="#00FFFF" 
    

    或将 colors.xml 引用为:

    android:fillColor="@colors/colorPrimary"
    

    或者其他方式(如果设置如下,颜色会随主题变化):

    android:fillColor="?colorPrimary"
    

    【讨论】:

      【解决方案2】:

      从 font awesome 下载的 .svg 文件的颜色设置为“currentColor”。创建矢量资源时,android 从原始文件中导入颜色。每次 android 构建项目时,它都会缝合以确保两个文件匹配,并替换两个文件之间的任何不一致。

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


      这是一个从 font awesome 下载的 .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资源文件。此外,此文件中颜色的值并不重要,因为您可以在布局文件中或动态更改它。

      【讨论】:

        【解决方案3】:

        我解决了这个问题,只是我用外部编辑器修改了 svg originar 并再次导入

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-12
          相关资源
          最近更新 更多