在Android状态列表drawable中,state_focused被忽略

时间:2010-10-23 16:27:45

标签: android drawable tabwidget

我的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(绿色高光)上选择带轨迹球的标签时,将使用暗图像而不是浅图像。实际选择标签后,它会变为白色。我做错了什么?

1 个答案:

答案 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只找到第一个 - 不是“最相关的” - 状态)。但如果未选中,则将执行对焦状态的检查。