我有一个带有项目的列表视图,彩色白色背景,当用户点击项目时,我希望用户交互更清晰,使背景颜色与白色不同。 如何使用代码(无xml )实现此目标?
答案 0 :(得分:0)
您需要在“drawable”文件夹中创建一个选择器xml文件,并将其用作项目的背景,例如:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_pressed="true"
android:drawable="@drawable/itemPressedColor" />
<item
android:state_pressed="false"
android:drawable="@drawable/itemNormalColor" />
</selector>
其中itemPressedColor和itemNormalColor是在同一文件夹中定义的可绘制文件
答案 1 :(得分:0)
您可以使用selector
drawable,如下所示:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/red"
android:state_pressed="true" />
<item android:drawable="@android:color/white" />
</selector>
然后将此drawable设置为列表项的背景。
要在代码中执行相同操作,您需要实现自定义适配器,并在其getView()
方法中使用如下代码:
StateListDrawable selector = new StateListDrawable();
selector.addState(new int[] { android.R.attr.state_pressed }, getResources().getDrawable(R.color.red));
selector.addState(new int[] {}, getResources().getDrawable(R.color.white));
...
View item = ...
item.setBackgroundDrawable(selector);
答案 2 :(得分:0)