我的Android应用程序使用TabActivity来显示其内容,它有4个选项卡,所有选项卡都使用状态列表可绘制图标。它们都具有相同的结构,只有不同的图像:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_options_dark" android:state_selected="true" android:state_focused="false" />
<item android:drawable="@drawable/icon_options_white" />
</selector>`
但是,在我的HTC Desire(绿色高光)上选择带轨迹球的标签时,将使用暗图像而不是浅图像。实际选择标签后,它会变为白色。我做错了什么?
答案 0 :(得分:1)
您需要为不同的州提供不同的项目。将一个项目中的几个状态组合在一起(就像你一样)肯定是错误的。您的XML可能如下所示:
<xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_options_dark"
android:state_selected="true" />
<item android:drawable="@drawable/icon_options_light"
android:state_focused="true" />
<item android:drawable="@drawable/icon_options_white" />
</selector>
在绘制您的drawable时,首先检查它的状态。如果选中它,则会使用第一个项目 - 就是这样 - 不会执行重点检查(Android只找到第一个 - 不是“最相关的” - 状态)。但如果未选中,则将执行对焦状态的检查。