我已成功更改所选自定义列表项的颜色,其根ViewGroup
未实现Checkable
,从橙色到system_blue通过为其attr背景分配selector.xml
:
<selector>
<item android:state_pressed="true"
android:drawable="@color/system_blue"/>
<item android:state_checked="true"
android:drawable="@color/system_blue"/>
<item android:drawable="@android:color/transparent"/>
</selector>
即使state_checked
案例已定义,但在手指离开所选项目后,也不会保留所选列表项目的状态。
现在是自定义列表项的根ViewGroup implements Checkable
,因为我需要维护所选列表项的状态。接口Checkable
的成员函数setChecked()
实现如下:
public void setChecked(boolean checked) {
mChecked = checked;
setBackgroundDrawable(checked ? new ColorDrawable(
getResources().getColor(R.color.system_blue)) : null);
}
现在,在手指离开选择项目后,所选项目的颜色可以保持为system_blue。然而,当按下项目时,颜色首先更改为默认橙色而不是system_blue。我的Android设备有默认的橙色。任何想法将不胜感激。
答案 0 :(得分:1)
尝试自行处理检查,将listView的选择模式设置为CHOICE_MODE_NONE。
并处理listView的onItemClickListener中项目的已检查状态。所以你可以完全控制背景和状态。
答案 1 :(得分:0)
查看我今天做的这个例子,确切地说:
修改强>
要在按下时更改项目颜色,需要为按下状态添加新项目,如下所示:
<item android:drawable="@drawable/gradient_bg_hover"
android:state_pressed="true"/>
答案 2 :(得分:0)
如果在HoneyComb及以上版本上工作,只需添加
即可?android:attr/activatedBackgroundIndicator
作为父视图的背景。它很容易解决:)