如何设置Android ScrollView的衰落边缘的颜色?

我有一个白色背景的Android滚动视图。 渐变的边缘是一个白色的半透明的渐变。 我想改变它是黑色而不是白色。 我有一个ListView在同一个项目中,默认情况下有一个黑色的衰落边缘的白色背景,但我找不到在哪里设置(如果有的话)。

只是通过试验和错误发现。

只需为<ScrollView>设置android:background="@color/yourColor" 。 它会将阴影设置为给定的颜色。

如果您需要与背景不同的颜色渐变边缘,则必须重写ScrollView的getSolidColor()方法。 例如:

 @Override public int getSolidColor() { return Color.rgb(0x30, 0x30, 0x30); } 

您可以使用:

  final int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android"); final Drawable androidGlow = context.getResources().getDrawable(glowDrawableId); androidGlow.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); int edgeDrawableId = context.getResources().getIdentifier("overscroll_edge", "drawable", "android"); final Drawable androidEdge = context.getResources().getDrawable(edgeDrawableId); androidEdge.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); 

你可以使用这个:

https://github.com/AndroidAlliance/EdgeEffectOverride

在这里输入图像说明

简单干净,工作完美!

编辑 :这不回答问题,这是要求ScrollView 。 这个答案只适用于AbsListView和后代(包括ListView )。


褪色边缘颜色由android:cacheColorHint属性控制。

例如:

<ScrollView android:cacheColorHint="#ff000000" android:background="#ffffffff" />

将背景设置为白色,并使用cacheColorHint绘制渐变边缘颜色 – 在这种情况下,它将是黑色的。

如果你不知道什么改变了你的褪色边缘的颜色,那可能是风格或主题的应用。 在Activity中检查你的清单中的android:theme="something" 。 如果主题是从组android.R.style.Theme.Light的边缘将是白色的。 默认的android.R.style.Themeandroid.R.style.Theme.Black会有黑色的衰落边缘。 主题也会影响其他属性,因此在将它们放入其中之前,请完全检查属性。

做这个:

  <ScrollView android:theme="@style/scrollUpdate" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > 

在值\样式中放置样式

 <style name="scrollUpdate"> <item name="colorAccent">@color/yourcolor</item> <item name="android:color">@color/yourcolor</item> <item name="colorPrimary">@color/yourcolor</item> <item name="colorPrimaryDark">@color/yourcolor</item> </style> 

为我工作!