Android布局加载异常:Binary XML file line #28 Error inflating class
Android InflateException 排查与解决
嘿,我一眼就揪出问题所在啦!你遇到的android.view.InflateException完全是因为给TextView设置了EditText专属的AppCompat样式导致的。
问题核心
看你第28行的代码:
<TextView android:id="@+id/QuantityProductInDoc" android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:layout_weight="1" android:textColor="#000" android:textSize="17dp" style="@style/Widget.AppCompat.EditText"/>
这里的style="@style/Widget.AppCompat.EditText"是专门为EditText控件设计的样式,里面包含了很多EditText特有的属性(比如光标样式、输入框背景、输入相关配置),而TextView并不支持这些属性,当LayoutInflater尝试给TextView加载这些属性时,就会抛出Inflate错误。
解决方案
你有两个可选的修复方式:
方式1:替换为TextView对应的AppCompat样式
把EditText的样式换成TextView专属的样式,或者直接移除样式属性(使用默认TextView样式):
<TextView android:id="@+id/QuantityProductInDoc" android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:layout_weight="1" android:textColor="#000" android:textSize="17dp" style="@style/Widget.AppCompat.TextView"/>
如果不需要额外样式,直接删掉style属性即可。
方式2:如果需要EditText的外观,直接改用EditText并设置不可编辑
如果你是想让控件看起来像EditText,那不如直接用EditText,然后设置为不可编辑状态:
<EditText android:id="@+id/QuantityProductInDoc" android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:layout_weight="1" android:textColor="#000" android:textSize="17dp" style="@style/Widget.AppCompat.EditText" android:editable="false" android:focusable="false"/>
这样既保留了EditText的外观,又不会让用户编辑内容。
额外说明
每个AppCompat控件的样式都是针对性设计的,TextView、EditText、Button等控件的样式不能混用,否则很容易因为属性不兼容导致Inflate异常。下次遇到类似问题,先检查控件的样式是否和控件类型匹配哦!
内容的提问来源于stack exchange,提问作者Александр Волошиновский
相关产品推荐
相关产品推荐

