我修改了列表视图,使其具有不同的选择颜色和项目背景。在我在应用程序或活动背景(纯色,png,渐变)上设置自定义颜色之前,情况正常。我也试过使用缓存颜色提示,但它似乎不起作用。
昨天我几乎整个谷歌都没有找到答案。我最接近的是thread:
绅士似乎说这是设计的。如果是,我想听听如何更改整个列表视图的背景颜色(我在谈论列表视图中可能为空的区域)。
如果你想查看一些代码,你会发现它here。
由于 和Manish
答案 0 :(得分:2)
我不清楚你在问什么,所以让我解释你正在玩的所有项目是如何一起工作的,也许你的答案会在那里。您在问题中描述了三种不同的视觉元素:
默认情况下,它们将在该层次结构中绘制,意味着(1)绘制在(2)之上,(2)绘制在(3)之上,依此类推。在没有自定义的ListView上,项目2& 3是透明的,选择器是具有多个状态的可绘制的。因此,由于透明度,您应用于活动或ListView下方的任何视图的任何自定义颜色都将显示。
如果您查看绘制这些内容的顺序,您可以开始了解如何自定义一个元素可能会掩盖对另一个元素所做的任何自定义。例如,如果您在列表的每个项目上设置了不透明背景,并且listSelector
属性将完全覆盖列表(除非设置drawSelectorOnTop
...这就是开发人员这样做的原因他们提供了一个以州为背景项目的绘图。
ListView只是另一个视图,如果您想为整个ListView提供背景并隐藏其下方显示的视图,您可以直接设置其background
属性。同样,如果您要设置自定义列表项背景,除了ListView足够大以显示其所有元素并且在它们下方有额外空间的区域之外,这将不可见。
cacheColorHint
的工作是通过告诉每个列表项用纯色背景(滚动时)绘制自己而不是透明来优化滚动性能。如果在ListView或下面的活动中设置纯色背景,则应将此值设置为相同的颜色。如果您的背景是渐变或图像,则无法使用此优化,并且应将其设置为透明(即#0000)
希望能帮助。