我已经成功地将选定的自定义列表项的颜色(其根未实现)从橙色更改为 system_blue,方法是为其 attr 背景分配: ViewGroup
Checkable
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
定义了大小写,但手指离开所选项目后,所选列表项的状态将不会保持。
现在自定义列表项的 root ViewGroup implements Checkable
,因为我需要维护所选列表项的状态。InterfaceCheckable
的成员函数setChecked()
实现如下:
public void setChecked(boolean checked) {
mChecked = checked;
setBackgroundDrawable(checked ? new ColorDrawable(
getResources().getColor(R.color.system_blue)) : null);
}
现在,在手指离开选择项后,选择项的颜色可以保持为 system_blue。然而,当按下该项目时,颜色首先更改为默认橙色而不是 system_blue。我的 android 设备具有默认的橙色。任何想法将不胜感激。