如何设置Android ScrollView淡化边缘的颜色?

And*_*ner 39 android scrollview fading

我有一个带有白色背景的Android滚动视图.褪色边缘是白色半透明渐变.我想改变它是黑色而不是白色.我在同一个项目中有一个ListView,白色背景默认有黑色渐变边缘,但我找不到设置的位置(如果有的话).

LEH*_*EHO 80

如果你想要一个不同于背景的颜色渐变边缘,你必须覆盖ScrollView的getSolidColor()方法.例如:

@Override
public int getSolidColor() {
    return Color.rgb(0x30, 0x30, 0x30);
}
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么没有人投票赞成显然是最普遍和最好的​​答案。只需看看 View 的 JavaDoc,它就清楚地说明了这一点。 (2认同)
  • 他是对的,这是在使用背景图像时获得彩色淡入淡出区域的唯一方法。只需扩展 ListView 类。 (2认同)
  • 这个问题的完整课堂解决方案张贴在这里:http://stackoverflow.com/questions/4050903/is-it-possible-to-change-the-colour-of-the-fadingedge-of-a-listview/5877824 #5877824 (2认同)

dig*_*ald 41

刚通过反复试验找到了它.

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

  • 根据列表视图的加载时间,这可能看起来很尴尬.(例如listview在列表单元格绘制在顶部之前显示背景颜色)... (2认同)

小智 7

您可以使用:

    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);
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 6

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


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

例如:

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

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

  • 我试过这个属性,但它不起作用.看来这个属性/方法仅适用于[AbsListView](http://developer.android.com/intl/fr/reference/android/widget/AbsListView.html#setCacheColorHint%28int%29). (7认同)

Dav*_*vid 6

你可以用这个:

https://github.com/AndroidAlliance/EdgeEffectOverride

在此输入图像描述

简单干净,工作完美!