2010-08-16 67 views
2

我想要有一个ListView,它将显示给定颜色的每一行,具体取决于该行的内容,但仍允许选择器绘制。就像现在一样,如果我在一行上调用View.setBackgroundColor,它会正确着色背景,但选择器不会被绘制。着色ListView行取决于内容

回答

2

您有三个主要选项。

一种方法是使用android:drawSelectorOnTop="true"并将ListView的选择器设置为透明/半透明的,因此当它在一行的顶部绘制时,仍然可以看到行内容。

或者,你将需要不设置行背景的颜色,但是到StateListDrawable,其中当选择该行的背景色设置为透明的,所以经常选择(画背后行)是可见的。

我们也欢迎您注册ListView的选择监听器,并根据选择更改的时间进行自定义颜色更改。

+0

我试过使用android:drawSelectorOnTop =“true”,但它最终绘制了整个视图。 我也试过使用StateListDrawable,但是当选中一行并且绘制状态发生变化时,它最终会去除类似行上的背景。 也许这是因为我使用复杂的视图,有多个文本视图和复选框,而不是简单的TextView,我已经看到这些方法的工作。 – cmccurdy 2010-08-17 00:04:42

+0

“我尝试过使用android:drawSelectorOnTop =”true“,但它最终绘制了整个View。” - 正如我在回答中所指出的那样,这就是为什么它必须透明/半透明。 – CommonsWare 2010-08-17 04:34:18

+0

以为我昨天曾尝试过,但显然今天起作用。谢谢您的帮助。 – cmccurdy 2010-08-17 13:40:36