Android按钮切换启用/禁用状态无法修改背景且报资源加载错误
问题根因
你的状态选择器button_background_selector.xml中启用状态的item属性配置错误:你使用了android:color属性加载drawable类型的shape资源,属性和资源类型不匹配导致系统无法正常解析该selector资源,既抛出了Inflate异常,也无法正常切换按钮状态对应的背景。
修复方案
将状态选择器中启用状态的android:color属性修改为android:drawable即可,修改后的完整selector代码如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_background" android:state_enabled="true" /> <item android:drawable="@drawable/button_disable_background" android:state_enabled="false" /> </selector>
补充注意事项
- 状态选择器中如果引用的是shape、图片类的drawable资源,必须统一使用
android:drawable属性,android:color属性仅可用于引用颜色值/颜色状态选择器 - 修复后清理项目编译缓存再重新运行,避免缓存导致问题复现
- 给控件设置背景类状态选择器时,所有item的属性类型必须统一,不可混用color和drawable属性
内容的提问来源于stack exchange,提问作者MARSH
相关产品推荐
相关产品推荐

