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

Android Studio导入SVG后预览黑屏且崩溃,报XML格式错误

哦,这个问题我碰到过好多次了!核心问题出在你搞混了Android Vector Drawable和原始SVG文件的区别,还选错了解析工具。

问题根源

你用Android Studio导入SVG后,它自动把原始SVG转换成了Android专属的<vector>格式的Vector Drawable XML——这是Android用来渲染矢量图的专用格式,不是标准SVG。但你却用SVGParser.getSVGFromResource()去解析它,这个工具是用来解析原始SVG文件的,根本不认识Android的Vector语法,所以才会抛出“not well-formed”的解析错误。至于预览黑屏,大概率是Vector Drawable的预览配置问题,但崩溃的核心原因绝对是解析工具不对。

解决方案分两种情况:

情况1:只是要显示这个矢量图,不需要解析内容

这是最常见的场景,完全不用碰SVGParser,直接用Android原生方式加载Vector Drawable就行:

  • 在布局文件里直接给ImageView设置src:
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/chde4" />
    
  • 或者在代码里设置:
    ImageView imageView = findViewById(R.id.your_image_view);
    imageView.setImageResource(R.drawable.chde4);
    
    另外,如果你的minSdkVersion低于21,记得在Module级别的build.gradle里添加支持:
    android {
        defaultConfig {
            vectorDrawables.useSupportLibrary = true
        }
    }
    
    这样调整后,预览也会正常显示,不会再黑屏。

情况2:确实需要解析SVG的内容(比如动态修改路径)

那你不能让Android Studio把SVG转成Vector Drawable,要保留原始SVG文件:

  1. 在res目录下新建raw文件夹(如果没有的话)
  2. 把你的原始SVG文件直接复制到res/raw目录下(不要通过Android Studio的导入功能,直接复制粘贴)
  3. 然后用SVGParser从raw目录读取输入流来解析:
    try {
        InputStream inputStream = getResources().openRawResource(R.raw.chde4);
        SVG svg = SVGParser.getSVGFromInputStream(inputStream);
        // 接下来就可以操作svg对象了
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    用原始SVG文件解析,就不会有格式不兼容的问题了。
额外提示

如果你想操作Android Vector Drawable的内容(比如修改路径颜色、形状),可以直接用Android的VectorDrawable类,不需要用SVGParser:

VectorDrawable vectorDrawable = (VectorDrawable) getDrawable(R.drawable.chde4);
// 比如获取路径组
Drawable.ConstantState state = vectorDrawable.getConstantState();
if (state instanceof VectorDrawable.VectorDrawableConstantState) {
    VectorDrawable.VectorDrawableConstantState vectorState = (VectorDrawable.VectorDrawableConstantState) state;
    List<VectorDrawable.PathInfo> paths = vectorState.getPaths();
    // 这里可以修改路径的属性
}

内容的提问来源于stack exchange,提问作者Patrik Eichmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:36:00