我正在开发一个Android应用程序。我使用
创建了一个列表视图setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayname));
getListView().setTextFilterEnabled(true);
现在我想更改所选项目的颜色。我可以通过放置
来更改所选项目的背景listviewobject.getChildAt(position).setBackgroundColor(Color.BLACK);
onListItemClick()中的
此代码正在更改背景颜色,但如果我选择任何其他列表项,那么之前单击的列表项的颜色也是红色。所以我改变之前点击的列表项的颜色
l.getChildAt(prevpos).setBackgroundColor(Color.BLACK);
现在的问题是,如果我将以前点击的listitems颜色的背景更改为黑色。然后我看不到该特定listitem上的文本。我再次单击然后只有我可以看到该项目上的文本。所以它看起来weired.please帮助我的朋友
答案 0 :(得分:19)
经过大量的帖子和博客后,我发现这个解决方案对我有用......
声明行变量全局
public View row;
your_list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v,
int position, long id) {
if (row != null) {
row.setBackgroundResource(R.color.orange);
}
row = v;
v.setBackgroundResource(R.color.transparent_green);
)};
答案 1 :(得分:5)
在列表视图的属性中使用它很简单:
android:listSelector="@drawable/list_selector"
它会自动将所选的drawable设置为所选项目的背景。希望这适合你,drawable可能是你自己选择的颜色。
说明:将图像条添加到drawables文件夹中,并在列表视图的listSelector属性中设置该图像。现在,您将浏览列表视图,列表视图的背景将是您设置的图像条的颜色,而不是android的原生颜色。希望你现在得到它...... :-)
答案 2 :(得分:1)
我发生了这种情况,因为你把文字颜色设置为黑色,你设置的背景颜色也是黑色,这就是你看不出差异的原因。要设置背景颜色,您可以使用以下行。
view.setBackgroundColor(Color.YELLOW);
使用不同的颜色,然后使用文字颜色。
答案 3 :(得分:1)
默认情况下,背景为黑色。如果您已自定义列表视图,则滚动时它将变为黑色。因此,当您将列表视图定义背景缓存颜色设置为您需要的颜色时,如下所示:
yourlistView.setCacheColorHint(Color.WHITE);
答案 4 :(得分:0)
您可以做的不是使用带有颜色值的.setBackgroundColor()
,而是创建Color State List并为其分配.setBackgroundResource()
。这样,您可以定义列表项可以变为的各种状态,具体取决于项目的当前状态。