1
<item android:state_enabled="false" android:color="@android:color/bright_foreground_dark_disabled"/>
<item android:color="@android:color/bright_foreground_dark"/>

这两者有什么区别?根据文档,当状态未启用时使用第一项的颜色,第二项是默认颜色。那么,如果该项目未启用,则使用哪种颜色?

4

2 回答 2

3

如果该项目未启用,item则使用第一个,因为它匹配其所有state选择器。选择器项目从上到下检查,第一个使用state匹配项。

于 2012-12-19T19:55:03.247 回答
0

false状态旨在与其他状态结合使用。例如,您有可检查的项目,它可以被禁用或启用,并且您希望每个状态组合具有不同的可绘制对象。这可以通过以下方式实现:

<item android:state_checked="true" android:state_enabled="true" android:drawable="@drawable/drawable1"/>
<item android:state_checked="true" android:state_enabled="false" android:drawable="@drawable/drawable2"/>
<item android:state_checked="false" android:state_enabled="true" android:drawable="@drawable/drawable3"/>
<item android:state_checked="false" android:state_enabled="false" android:drawable="@drawable/drawable4"/>
<item android:drawable="@drawable/drawable0"/>

如果你不需要这样的组合,那么state_xxx="false"没有其他状态就没有必要使用,尽管这不是一个错误。

于 2012-12-19T20:35:08.293 回答