Android 7.1.1设备MaterialTextView膨胀异常问题求助
Android 7.1.1 视图膨胀异常问题解决
问题描述
在Android 7.1.1设备上运行应用时,突然出现视图膨胀异常,报错为:Error inflating Binary XML file line #53: Error inflating class com.google.android.material.textview.MaterialTextView。尝试将MaterialTextView替换为TextView后问题仍未解决,按钮组件也出现相同异常。
相关代码与日志
XML布局片段
<com.google.android.material.textview.MaterialTextView android:id="@+id/titleLogin" android:layout_width="0dp" android:layout_height="wrap_content" android:fontFamily="sans-serif" android:paddingStart="20dp" android:paddingTop="20dp" android:paddingBottom="10dp" android:text="Login" android:textColor="@color/black" android:textSize="34sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0" app:layout_constraintWidth_percent=".8" />
Logcat错误信息
Caused by: android.view.InflateException: Binary XML file line #53: Binary XML file line #53: Error inflating class com.google.android.material.textview.MaterialTextView Caused by: android.view.InflateException: Binary XML file line #53: Error inflating class com.google.android.material.textview.MaterialTextView Caused by: java.lang.reflect.InvocationTargetException
完整堆栈跟踪
2022-10-29 21:16:00.512 12386-12386/com.poweredbyralph.southernlines E/AndroidRuntime: FATAL EXCEPTION: main Process: com.poweredbyralph.southernlines, PID: 12386 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.poweredbyralph.southernlines/com.poweredbyralph.southernlines.LoginActivity}: android.view.InflateException: Binary XML file line #53: Binary XML file line #53: Error inflating class com.google.android.material.textview.MaterialTextView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2798) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2863) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6410) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945) Caused by: android.view.InflateException: Binary XML file line #53: Binary XML file line #53: Error inflating class com.google.android.material.textview.MaterialTextView Caused by: android.view.InflateException: Binary XML file line #53: Error inflating class com.google.android.material.textview.MaterialTextView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:430) at android.view.LayoutInflater.createView(LayoutInflater.java:645) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:710) at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:195) at com.poweredbyralph.southernlines.LoginActivity.onCreate(LoginActivity.java:39) at android.app.Activity.performCreate(Activity.java:6681) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2863) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6410) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945) Caused by: java.lang.ArrayIndexOutOfBoundsException: length=56; index=930 at android.content.res.StringBlock.get(StringBlock.java:65) at android.content.res.XmlBlock$Parser.getPooledString(XmlBlock.java:458) at android.content.res.TypedArray.loadStringValueAt(TypedArray.java:1218) at android.content.res.TypedArray.getText(TypedArray.java:168) at android.widget.TextView.<init>(TextView.java:1028) 2022-10-29 21:16:00.512 12386-12386/com.poweredbyralph.southernlines E/AndroidRuntime: at android.widget.TextView.<init>(TextView.java:731) at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:108) at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:88) at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:83) ... 31 more
问题根源分析
从堆栈最底层的ArrayIndexOutOfBoundsException可以看出,问题出在系统读取资源字符串时索引越界,说明编译生成的资源文件可能损坏,或者资源引用存在错误,导致视图初始化时无法正确读取所需资源。
解决方案
- 清理并重建项目:执行Android Studio的
Build -> Clean Project,再执行Build -> Rebuild Project,或者用命令行运行./gradlew clean assembleDebug,清除编译缓存并重新生成资源文件。 - 检查资源完整性:排查所有XML布局文件、
strings.xml、colors.xml等资源文件,确保没有未闭合标签、特殊字符,以及所有引用的资源(如@color/black)都存在且拼写正确。 - 适配依赖版本:Android 7.1.1对应API 25,检查
com.google.android.material:material库的版本是否兼容。如果使用了过高版本,尝试降级到兼容API 25的版本(如1.6.1)。 - 清除设备缓存:卸载应用后,进入设备设置的应用管理清除残留缓存,再重新安装最新编译的APK。
- 调整资源压缩配置:如果开启了
shrinkResources true,检查proguard-rules.pro或res/raw/keep.xml,确保必要的资源没有被误删,避免运行时找不到资源导致索引越界。
内容的提问来源于stack exchange,提问作者Ralph Botes
相关产品推荐
相关产品推荐

