I have an Android scrollview with a white background. The fading edge is a white translucent gradient. I would like to change it be black instead of white. I have a ListView
Just found it out by trial and error.
Simply set android:background="@color/yourColor"
for the <ScrollView>
. It will set the shadow to the given colour.
EDIT: this does not answer the question, which was asking for ScrollView
. This answer only works on AbsListView
and descendants (including ListView
).
Fading edge color is controlled by the android:cacheColorHint
attribute.
E.g.:
<ScrollView android:cacheColorHint="#ff000000" android:background="#ffffffff" />
will set the background to white, and the cacheColorHint
is used to draw the fading edge color -- in this case, it would be black.
If you want a different color fading edge than the background, you have to override the ScrollView's getSolidColor() method. For example:
@Override
public int getSolidColor() {
return Color.rgb(0x30, 0x30, 0x30);
}
Do this:
<ScrollView
android:theme="@style/scrollUpdate"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
in values\styles put the style
<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>
works to me tks!
You can use:
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);
You can use this:
https://github.com/AndroidAlliance/EdgeEffectOverride
Simple clean and working perfect!