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

Kotlin使用png作为Drawable时模拟器启动应用后闪退问题求助

问题原因与解决方案

问题根源

ImageVector.vectorResource()是Jetpack Compose中专门用于加载**矢量Drawable资源(XML格式)**的API,它无法识别并加载png这类位图资源。当你传入png资源ID时,会触发资源类型不匹配的异常,直接导致应用崩溃闪退。

解决方案

方法一:使用通用资源加载API(推荐)

将ImageVector.vectorResource()替换为painterResource(),这是Compose中通用的资源加载方法,同时支持矢量图和位图:

Icon(
    painter = painterResource(id = R.drawable.calc),
    modifier = Modifier.size(buttonWidth),
    contentDescription = "calc icon",
    tint = Color.Unspecified
)

方法二:将png转换为矢量Drawable(可选)

如果坚持使用ImageVector.vectorResource(),可以把png转为XML矢量图:

  • 在Android Studio中右键点击drawable目录 → 选择New → Vector Asset
  • 在弹出的窗口中选择Local file (SVG, PSD),导入你的calc.png,按照向导完成转换
  • 转换完成后,使用生成的XML矢量资源ID即可正常加载

额外注意事项

  • 确保png资源放置在正确的drawable系列目录下,资源文件名仅使用小写字母、数字和下划线,避免大写或特殊字符
  • 执行Build → Clean Project,再执行Build → Rebuild Project,清理资源缓存,避免旧缓存导致的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:55:18