创建自定义ListView选择器时出现问题

时间:2011-05-25 15:22:09

标签: java android listview selector drawable

当我尝试点击列表视图项时,不会显示选择器。这是我的ListView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/streamRelativeLayout">
    <ListView android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/streamListView" android:cacheColorHint="#00000000" android:fadingEdge="none" android:listSelector="@drawable/swipeview_list_selector">   </ListView>
    <TextView android:layout_centerInParent="true" android:layout_height="wrap_content" android:id="@+id/noStreamTextView" android:layout_width="wrap_content" android:text="No Stream Available" android:visibility="invisible"></TextView>
    <ProgressBar android:layout_centerInParent="true" android:layout_height="wrap_content" android:id="@+id/streamProgressBar" android:layout_width="wrap_content"></ProgressBar>
</RelativeLayout>

这是我的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_enabled="false" android:state_focused="true"
        android:drawable="@drawable/stocks_gradient" />
  <item android:state_pressed="true"
        android:drawable="@drawable/stocks_gradient" />
  <item android:state_focused="true"
        android:drawable="@drawable/stocks_gradient" />
</selector>

这是渐变:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
        android:startColor="#ECECEC"
        android:centerColor="#F6F6F4"
        android:endColor="#F8F8F6"
        android:angle="90"
        android:dither="true"
     />
</shape>

我还将背景颜色设置为在getView()

中交替显示
int colorPos = position % colors.length;
            v.setBackgroundColor(colors[colorPos]);

3 个答案:

答案 0 :(得分:0)

如果您的意思是所选项目没有按照您想要的方式显示,那就是因为您错过了state_selected案例:

<item android:state_selected="true" android:drawable="..."/>

答案 1 :(得分:0)

我看到的第一个问题是你所有的状态都使用相同的drawable,所以当你点击它时你不会看到变化。并且您没有考虑所有情况,例如您没有默认状态。

答案 2 :(得分:0)

我需要将selectorontop属性设置为true。