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

Android Material3 OutlinedBox.Dense致TextInputLayout inflate异常

问题原因

你遇到的TextInputLayout填充报错核心是三个问题:

  • 依赖版本过低:当前引入的com.google.android.material:material:1.6.1版本不包含完整的Material3 XML组件样式,Widget.Material3.*系列的TextInputLayout相关样式从1.7.0版本才正式加入,1.6.x版本仅支持Material2体系的样式,找不到对应属性就会触发inflate异常。
  • 样式用错控件层级:@style/Widget.Material3.AutoCompleteTextView.OutlinedBox.Dense是给内层自动补全输入控件TextInputAutoCompleteTextView用的样式,不能直接套在外层TextInputLayout上,否则会因为属性不匹配导致初始化失败。
  • 额外风险:你配置的jcenter仓库已经停止服务,可能存在依赖拉取不全的问题;如果应用主题未继承Material3主题,也会触发同类加载错误。
修复步骤
  • 升级Material组件依赖
    打开模块级build.gradle,把旧的Material依赖替换为稳定版高版本:
// 删掉原来的implementation 'com.google.android.material:material:1.6.1'
implementation 'com.google.android.material:material:1.11.0'

同时把repositories里的jcenter()删掉,避免依赖拉取异常。已添加的Compose相关Material3依赖不需要调整,不影响XML组件使用。

  • 修正XML布局中的样式引用
    把两个TextInputLayout上错误的AutoComplete样式,替换为TextInputLayout对应的Material3轮廓框密集样式:
<!-- 原来的style="@style/Widget.Material3.AutoCompleteTextView.OutlinedBox.Dense" 替换为 -->
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"

如果你后续要做带下拉选项的自动补全输入框,只需要把内层的TextInputEditText替换为TextInputAutoCompleteTextView,再给内层控件设置AutoComplete对应的样式即可,普通邮箱、密码输入场景不需要用到AutoComplete系列样式。

  • 校验应用主题配置
    打开res/values/themes.xml,确保应用使用的主题继承自Material3主题族,例如:
<style name="Theme.你的应用名" parent="Theme.Material3.Light.NoActionBar">
    <!-- 自定义主题属性放在这里 -->
    <item name="colorPrimary">@color/your_primary</item>
</style>

不要使用Theme.MaterialComponents(Material2主题)或者Theme.AppCompat主题,否则会找不到Material3样式需要的属性。

完成以上操作后重新编译运行,inflate异常即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:09:44