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

自定义Drawable引发Inflation Exception问题排查求助

问题原因分析

1. 缺少XML布局适配的构造函数

当你在XML布局中引用自定义TextDrawable时,Android的LayoutInflater会尝试调用带Context和AttributeSet参数的构造函数来实例化Drawable,但你的TextDrawable只实现了无参构造函数,系统找不到匹配的构造方法,直接触发实例化失败,进而导致包含该Drawable的GridLayout无法完成inflation,抛出Error inflating class android.widget.GridLayout异常。

2. 构造函数中错误使用Application Context获取资源

在TextDrawable的无参构造里,直接通过Application.Context获取颜色和字体资源,这种方式在Drawable被inflation加载时可能出现上下文不匹配的问题——Drawable应该关联到当前View所在的Activity/View Context,而非全局Application Context,后者无法正确适配当前布局的主题配置,可能引发资源加载异常。

3. Draw方法中文字绘制坐标错误

canvas.DrawText("CABBAGE", 0, 0, this.TextPaint)将文字的baseline设置在Canvas的(0,0)位置,这会导致文字完全被绘制到Canvas可视区域之外(因为文字的baseline以下还有部分内容,而y=0是顶部边界),虽然这不会直接引发inflation崩溃,但会导致Drawable显示异常,后续如果涉及测量逻辑也可能触发其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:20:28