控制ListViews中淡入淡出边缘的颜色

时间:2011-01-13 08:26:17

标签: android listview

我的主题源自Android的默认灯光主题。我的ListViews配置了白色背景,我猜这是一个副作用,渐变边缘的颜色是白色,这不是我想要的东西 - 我希望它们是黑色的。

似乎不可能简单地改变边缘的颜色(虽然我可以控制长度和其他因素),并且通常建议使用黑色颜色列表视图的提示颜色导致一些相当可怕的副作用列表时滚动。

任何人都可以建议一种可靠的方法将褪色边缘的颜色改为任意颜色吗?

7 个答案:

答案 0 :(得分:35)

这实际上要容易得多。

您可以使用:'android:cacheColorHint'设置将淡入淡出的颜色更改为您想要的任何颜色。

例如:

<ListView
....
android:cacheColorHint="#FFFFFF"
/>

答案 1 :(得分:18)

不幸的是,你不能轻易做到这一点。渐弱边缘的整个点是淡入背景,而不是绘制一些随机颜色。但是,您可以尝试扩展ListView并覆盖getSolidColor()以返回淡化边所需的颜色。它应该工作得很好。

答案 2 :(得分:10)

我遇到的问题是白色是“Overscroll”颜色,实际上并不是褪色边缘。

试试这个(假设你想要一个褪色的边缘,但是当你到达目的地时不会出现可怕的白色眩光!(否则设置需要褪色边缘到无)):

<ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:cacheColorHint="#00000000"
    android:requiresFadingEdge="vertical"
    android:fadingEdgeLength="10dp" 
    android:overScrollMode="never" >      </-- this is the line you want i think -->
</ListView> 

答案 3 :(得分:4)

您可以使用反射更改EdgeEffectListView的{​​{1}}颜色。将以下静态工厂方法复制到项目中并使用GridView

setEdgeGlowColor(yourListView, yourAwesomeColor);

答案 4 :(得分:2)

我在扩展ListView的类中发布了针对此问题的完整解决方案。这里:Is it possible to change the colour of the FadingEdge of a Listview?

答案 5 :(得分:1)

如果你的意思是“边缘发光/效果”,我发现了一种非常简单(但却是hackish)的方法来实现这一点(改变发光的颜色):

int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);

我利用了一个事实,即发光效果实际上是一个Drawable(并且在那里不变异),并在其上应用了一个滤镜。 更多相关信息,请点击此处:http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/

答案 6 :(得分:0)