3

在 styles.xml 中,我为 ListView 项定义了一个主题和一个样式:

// styles.xml
<style name="MyTheme">
    <item name="android:listViewStyle">@style/ListView</item>
</style>

<style name="ListView">
    <item name="android:drawSelectorOnTop">true</item>
    <item name="android:listSelector">@drawable/my_red_selector</item>
</style>

我正在使用 ListFragment,我可以看到我的 listview 选择器的颜色受到尊重(“@drawable/my_red_selector”),但似乎 drawSelectorOnTop 属性被忽略了 - 我的选择器仍在下方绘制。

如果我定义自己的布局文件并执行以下操作:

<ListView
    android:id="@+id/foo"
    ...
    style="@style/ListView" />

那么样式中的 drawSelectorOnTop 属性就会被兑现。是否有什么我可能做错了让我的顶部属性上的选择器被忽略?

谢谢

- - 编辑 - - - - -

这是“my_red_selector”的定义:

// my_red_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/red_on"/>
  <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/red_on"/>
  <item android:state_focused="true" android:drawable="@drawable/red_on"/>
  <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/transparent"/>
</selector>

// red_on.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
  <solid android:color="@color/red" />
</shape>
4

1 回答 1

2

如果您有自定义行,请在 ListView 的列表项行上尝试以下选择器

    <!-- Active tab -->
    <item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>
    <!-- Inactive tab -->
    <item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
    <!-- Pressed tab -->
    <item android:drawable="@drawable/red_on" android:state_pressed="true"/>
    <!-- Selected tab (using d-pad) -->
    <item android:drawable="@drawable/red_on" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/>

</selector>
于 2012-06-15T05:56:37.200 回答