1

我正在开发一个应用程序,其中我有一个列表视图。在列表视图中,我只想更改所选项目的颜色。这意味着如果我点击第一个项目它应该改变颜色然后我再次点击第二个项目然后第一个项目的颜色将变得正常并且它会改变第二个项目的颜色。我在这里使用自定义列表视图。这里position是选中项,CommonUtilities.getListPosition()是全局定义的存储位置的方法。我可以在选择时更改颜色,但是当我单击第二个项目时,颜色不会更改为以前的颜色。

if (position == CommonUtilities.getListPosition()) {
    v.setBackgroundColor(Color.CYAN);
}else{
    v.setBackgroundColor(Color.WHITE);
}
4

2 回答 2

0

ListView 项目背景通过自定义选择器。此链接将为您提供帮助。使用选择器。按下时和正常模式下指定不同的颜色。我希望这正是你要找的。

当您单击列表视图中的一行时,您可以在单击时更改列表视图的颜色。然后在发布时恢复正常状态。为什么单击第二行时要更改第一行颜色?列表视图中的每一行都保持正常状态,直到被单击为止。释放时恢复正常状态。上面的链接可以帮助您实现相同的目标。

于 2013-02-12T06:29:50.527 回答
0

在 ListView 的 xml 中应用 listSelector,如下所示:

android:listSelector="@drawable/list_selector"

并在 drawable 文件夹中创建 list_selector.xml 文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/row_not_selected" android:state_pressed="false" android:state_selected="false"/>
    <item android:drawable="@color/row_selected" android:state_pressed="true" android:state_selected="true"/>

</selector>

colors.xml并在with names中创建两种颜色row_not_selected, row_selected

就是这样。谢谢。如果还有其他需要,请告诉我。

于 2013-02-12T06:36:55.020 回答