Android列表视图所选项目颜色必须保持更改,即使手指被抬起

时间:2012-10-09 04:53:51

标签: android listview layout

我跟着许多这样的问题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>

1 个答案:

答案 0 :(得分:0)

将此项添加到您的选择器

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

这将是你默认的drawable。

您可以删除

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

更新 - &gt;

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

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);
    }

}

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