我逐行创建了一个带有两种背景颜色的ListView。然后我需要在点击项目时改变它的背景颜色,然后回到它自己的颜色损失聚焦项目。 我尝试使用下面的代码并且view.setBackgroundResource()在ItemClickListener中没有正常工作。
if (selectedView != null) {
if (selectedRowIndex % 2 == 0) {
view.setBackgroundResource(R.color.list_secondcolor);
} else {
view.setBackgroundResource(R.color.list_firstcolor);
}
}selectedRowIndex = position;
selectedView = view;view.setBackgroundColor(Color.WHITE);
还有其他可能的方法吗? 提前谢谢。
答案 0 :(得分:1)
您可以通过XML轻松完成此操作。您必须定义具有不同状态的drawable。在您的情况下,由于列表项的背景颜色应该交替,您必须定义两个drawable。
在此drawable中,您可以为列表项可以具有的不同状态定义颜色。正常,聚焦,按压,聚焦和按压。然后,您只需将此drawable应用于列表项的background属性。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- default -->
<item android:drawable="@color/normal_color" />
<!-- focused -->
<item android:state_focused="true" android:drawable="@color/focused_color" />
<!-- pressed -->
<item android:state_pressed="true" android:drawable="@color/pressed_color" />
<!-- focused and pressed-->
<item android:state_focused="true" android:state_pressed="true" android:drawable="@color/focused_pressed_color" />
</selector>