0

我有一个带有项目的列表视图,颜色为白色背景,我希望用户单击项目时用户交互更加清晰,使背景颜色与白色不同。如何使用代码无 xml)实现这一点?

4

3 回答 3

0

您可以使用selector可绘制对象,如下所示:

<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>

然后将此可绘制对象设置为列表项的背景。

要在代码中执行相同的操作,您需要实现一个自定义适配器,并在其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);
于 2013-09-03T13:00:26.237 回答
0

在代码中对 xmlState list Drawable使用State List

于 2013-09-03T13:01:01.150 回答
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 将是在同一文件夹中定义的可绘制对象

于 2013-09-03T13:00:07.007 回答