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

运行注册Activity时遇Error inflating XML类错误:资源非Drawable

解决 "Error inflating XML class - Resource is not a Drawable (color or path)" 错误

你遇到的这个XML膨胀错误,大概率是布局里引用Drawable资源时出了类型不匹配或路径错误的问题,结合你提到的Toolbar、EditText相关Drawable,我整理几个实用的排查方向:

1. 修正颜色资源的Drawable引用方式

在API 22这类较低版本中,直接把颜色资源当作Drawable使用会触发这个错误。比如给EditText设置背景时:

  • 错误写法:
    <EditText
        android:background="@color/light_gray" />
    
  • 正确处理方式(二选一):
    <!-- 用drawable文件包裹颜色 -->
    <EditText
        android:background="@drawable/edit_text_bg" />
    <!-- 或者用tint属性给默认Drawable上色 -->
    <EditText
        android:background="@drawable/default_edit_bg"
        android:backgroundTint="@color/light_gray" />
    

2. 排查Toolbar的Drawable引用问题

Toolbar里的导航图标、菜单图标很容易踩坑:

  • 别把颜色资源当成图标Drawable引用,比如错误写法:app:navigationIcon="@color/black",要改成app:navigationIcon="@drawable/ic_back_arrow"
  • 如果用了Vector Drawable,API 22及以下版本需要在build.gradle开启支持:
    android {
        defaultConfig {
            vectorDrawables.useSupportLibrary = true
        }
    }
    
    或者直接把Vector转成PNG格式放到对应drawable目录。

3. 检查自定义View与XML根节点

如果布局里有自定义View,确认它的构造函数是否正确处理了AttributeSet,有没有在初始化时错误地把颜色资源当作Drawable加载。另外,别不小心把布局根节点写错类型,比如把LinearLayout误写成androidx.appcompat.widget.Toolbar,也会触发膨胀错误。

4. 清理缓存重建项目

有时候是Android Studio缓存导致的资源识别异常,试试:

  • 点击菜单栏 Build -> Clean Project
  • 接着执行 Build -> Rebuild Project
  • 极端情况可以手动删除项目的build目录和.idea下的缓存文件,再重新同步项目

要是这些方法都没解决,你可以把注册Activity布局、Toolbar布局、EditText的Drawable定义代码贴出来,这样能更精准定位问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:29:43