0

我的 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(绿色突出显示)上选择带有轨迹球的选项卡时,会使用深色图像而不是浅色图像。一旦实际选择了一个选项卡,它就会变成白色。我究竟做错了什么?

4

1 回答 1

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>

在绘制可绘制对象时,首先检查其状态。如果它被选中,将使用第一个项目,仅此而已 - 不会执行重点检查(Android 只找到第一个- 不是“最相关” - 状态)。但如果未选中,则将执行对焦点状态的检查。

于 2010-11-22T11:43:16.567 回答