选择器项android:state_xxx =“false”vs没有状态的项目(默认)

时间:2012-12-19 19:52:17

标签: android android-xml android-selector

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

<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",尽管这不是错误。