listview 项目背景颜色更改
Posted
技术标签:
【中文标题】listview 项目背景颜色更改【英文标题】:listview item background color change 【发布时间】:2012-03-10 12:58:37 【问题描述】:我正在开发一个安卓应用程序。我使用
创建了一个列表视图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);
现在的问题是,如果我将先前单击的列表项的背景颜色更改为黑色。然后我看不到该特定列表项上的文本。我再次单击然后只有我可以看到该项目上的文本。所以它看起来很奇怪。请朋友们帮帮我
【问题讨论】:
列表的默认背景颜色是什么? 【参考方案1】:在浏览了很多帖子和博客后,我发现这个解决方案对我有用...
声明行变量全局
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);
);
【讨论】:
谢谢@KushalShah 先生 :) 嘿,太好了。但是当我们取消选择列表视图的行时该怎么办?当未选择行时,我必须保持与以前相同的颜色。 @AnilBhatiya 而不是 R.color.transparent_green 你可以设置你的列表视图颜色。 我试过了。但不工作。我原来的背景是白色的。当我写如 arg1.setBackgroundColor(Color.WHITE);它正在工作,但与原始背景白色相比,这种白色颜色较深。 虽然这最初有效,但我发现它并不完美。如果您的列表足够大,可以滚动,您的背景颜色可以在滚动时移动到不同的行。我认为这是因为视图被重新用于新可见的行。【参考方案2】:在列表视图的属性中使用它可能会有所帮助:
android:listSelector="@drawable/list_selector"
它会自动将选中的drawable设置为选中项的背景。希望这对你有用,drawable 可能是你自己选择的颜色。
说明:将图像条添加到您的可绘制文件夹中,并将该图像设置在列表视图的 listSelector 属性中。现在您将在列表视图中导航,列表视图的背景将是您设置的图像条的颜色,而不是 android 的本机颜色。希望你现在明白了...:-)
【讨论】:
请检查一下...***.com/questions/9359130/… 使用选择器后出现异常 好吧,我告诉你的过程......因为你不需要放置选择器......我提到的属性将自动执行这一切......你只需要制作一个drawable即,您选择的某种颜色的图像条...记住这将是一个图像...并通过 listselector 属性将此图像设置为您的 ListView ....【参考方案3】:发生这种情况是因为您将文本颜色设置为黑色,并且您将背景颜色设置为黑色,这就是您看不到差异的原因。要设置背景颜色,您可以使用以下行。
view.setBackgroundColor(Color.YELLOW);
使用与文本颜色不同的颜色。
【讨论】:
@sarath 谁告诉你的。您正在使用阵列适配器。这就是为什么它不允许 you.use Base 适配器膨胀它允许设置颜色的列表视图。默认颜色是黑色,所以你设置一些不同的背景颜色列表视图内容可以看到。【参考方案4】:默认情况下背景为黑色。如果您自定义了列表视图,那么当您滚动时它会变黑。因此,当您定义列表视图时,将背景缓存颜色设置为您需要的颜色,如下所示:
yourlistView.setCacheColorHint(Color.WHITE);
【讨论】:
【参考方案5】:您可以做的不是使用带有颜色值的.setBackgroundColor()
,而是创建一个Color State List 并将其分配给.setBackgroundResource()
。这样,您可以根据项目的当前状态定义列表项可以变为的各种状态。
【讨论】:
嗨..我写 setListAdapter(new ArrayAdapter以上是关于listview 项目背景颜色更改的主要内容,如果未能解决你的问题,请参考以下文章