1

我关注了很多像这样的问题 1 change color of selected listview item,但没有发现任何有用的东西。

我有一个列表视图,我想要的是,即使用户抬起手指,所选项目也必须突出显示,例如蓝色。

这是我在drawable中的row_color.xml

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false" android:state_focused="false"
        android:drawable="@android:color/transparent" />

    <item android:state_pressed="true" android:drawable="@color/light_sea_green" />

    <item android:state_selected="true" android:drawable="@color/light_sea_green" />

</selector>

这是我膨胀的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:background="@drawable/row_color">

    <ImageView
        android:id="@+id/imageView_game_row_face"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="4dp"
        android:layout_marginTop="4dp"
        android:src="@drawable/af025501" />

</LinearLayout>
4

1 回答 1

0

将此添加到您的选择器

<item android:drawable="@android:color/transparent" />

这将是您的默认可绘制对象。

你可以删除

 <item android:state_pressed="false" android:state_focused="false"
        android:drawable="@android:color/transparent" />

更新->

这是一个可以帮助您的代码片段 -

public View getView(int position, View convertView, ViewGroup parent) {

/* Your code reusing code here */

    if(position == selectedItemPosition which you must save in onItemClickListener of the listview)
        convertView.setBackgroundResource(selecteditem background color);
    }
    else {
        convertView.setBackgroundResource(normal background color);
    }

}

其他部分非常重要。否则会导致回收的视图带有相同的背景颜色。

于 2012-10-09T04:58:18.950 回答