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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:05:44