我跟着许多这样的问题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>
答案 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颜色。