You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio导入Inkscape导出SVG报错:Gradient has no stop info

解决Android Studio导入SVG时的“Gradient has no stop info”错误

我来帮你搞定这个问题~从你提供的代码和错误信息来看,主要是Android Studio的SVG解析器对Inkscape导出的SVG兼容性问题,加上一些语法小错误导致的,咱们一步步来修复:


1. 先修复破坏标签结构的注释

你代码里的注释位置有问题,比如<radialGradient <!-- LINE 35-->这种写法会直接打断标签的完整性,Android的解析器根本没法正确识别这个radialGradient标签,自然也就找不到它引用的渐变停止信息。还有linearGradient里多余的-->也属于无效注释,得全部删掉。

SVG 2.0已经废弃了带xlink:前缀的引用写法,而Android Studio的Vector Asset解析器对旧语法支持不佳。你需要把radialGradient里的xlink:href="#linearGradient11815"改成href="#linearGradient11815"。

3. 移除Inkscape专属扩展属性

Inkscape导出的SVG会自带一些它自己的属性(比如inkscape:collect="always"),这些属性Android完全不识别,还可能干扰解析过程,直接删掉所有以inkscape:开头的属性就行。

4. 保持stop标签的简洁格式

你已经把stop标签从style属性的写法改成了单独的stop-color和stop-opacity属性,这一步是对的,继续保持这个格式,不要用style聚合属性的写法,Android解析器对这种拆分后的属性支持更好。


修正后的示例代码

<defs id="defs11210">
  <linearGradient id="linearGradient11815">
    <stop stop-color="#69aeed" stop-opacity="1" offset="0" />
    <stop stop-color="#66e6b2" stop-opacity="0.90909094" offset="1" />
  </linearGradient>
  <radialGradient href="#linearGradient11815" id="radialGradient928"
                  cx="99.615288" cy="233.88142" fx="99.615288" fy="233.88142"
                  r="80.842598" gradientTransform="matrix(1,0,0,1.3440437,0,-80.46542)"
                  gradientUnits="userSpaceOnUse" />
</defs>

如果做完这些还是有问题,可以试试用SVG优化工具把SVG里的冗余内容清理一遍,再导入Android Studio的Vector Asset。

内容的提问来源于stack exchange,提问作者Paweł Bęza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:51:24