我正在用ListView实现android:listSelector

<style name="ListView" parent="@android:style/Widget.ListView">
    <item name="android:cacheColorHint">@color/transparent</item>
    <item name="android:divider">@drawable/divider</item>
    <item name="android:dividerHeight">1px</item>
    <item name="android:listSelector">@color/red</item>
</style>

选择效果很好,但是当我开始滚动时,listSelector会随机卡在ListView的顶部或底部。我将不胜感激任何帮助。

最佳答案

主要问题是您使用的是单色而不是Drawables。在布局框架中的一个缺点是,如果设置纯色,则会发生保持问题。

您正在使用的代码为:

<item name="android:listSelector">@color/red</item>

应该用作:
    <item name="android:listSelector">@drawable/list_view_selector</item>

上面编写的可绘制对象应包含在选择器标记中。

这是list_view_selector的代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_enabled="true"
     android:state_pressed="true" android:drawable="@drawable/background_selected" />
    <item android:state_enabled="true"
     android:state_focused="true" android:drawable="@drawable/background_selected" />
    <item android:state_enabled="true"
     android:state_selected="true" android:drawable="@drawable/background_selected" />

</selector>

注意:您不能原样使用纯色。您必须将每种色调的选择器设为:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <gradient
        android:angle="90"
        android:centerColor="#ff0000"
        android:endColor="#ff0000"
        android:startColor="#ff0000" />

</shape>

我已经在最后检查了这一点。工作完美!

关于android - 在ListView中挂起listSelector,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12755088/

10-09 12:39