Android设置TextInputLayout的app:errorEnabled="true"时出现InflateException错误
app:errorEnabled="true"后的膨胀异常问题 嘿,这个问题我之前帮不少开发者排查过,咱们一步步来定位解决:
检查布局的命名空间声明
你用了app:errorEnabled这个属性,必须在布局的根元素里声明app命名空间,不然系统识别不了这个属性。打开你的布局文件,看看根标签(比如LinearLayout/ConstraintLayout)里有没有这行:xmlns:app="http://schemas.android.com/apk/res-auto"如果没有,加上就好——这是最容易忽略的点。
确认Design Support库的依赖配置
TextInputLayout的errorEnabled属性是Design Support库提供的,你得确保项目里正确引入了依赖。如果是用旧的support库(你代码里用的是android.support.design.widget.TextInputLayout),在build.gradle(Module级别)里检查有没有类似这样的依赖:implementation 'com.android.support:design:28.0.0'注意版本号要和你的
compileSdkVersion、targetSdkVersion保持一致,比如你compileSdk是28,依赖版本也得是28.x.x,版本不匹配很容易出这类膨胀异常。检查主题是否兼容
Design库的控件需要依赖AppCompat主题,所以你的Activity主题必须继承自Theme.AppCompat或者它的子类(比如Theme.AppCompat.Light)。打开AndroidManifest.xml,看看对应Activity的android:theme属性是不是符合要求:<activity android:name=".YourActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar">如果用的是默认的
Theme.Material或者其他非AppCompat主题,就会导致Design控件初始化失败。清理缓存重启项目
有时候Android Studio的缓存会抽风,导致资源识别异常。试试点击菜单栏的File -> Invalidate Caches / Restart,清理完缓存重启项目,说不定就能解决奇怪的膨胀问题。
如果上面的步骤都试过还是不行,可以把你的build.gradle依赖部分和布局完整代码贴出来,我再帮你进一步排查。
内容的提问来源于stack exchange,提问作者Konstantinos Evangelidis

