在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>
答案 0 :(得分: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>