I want to give the effect that the ListView has faded from whatever is around it. By default it is set to whatever colour your ListView is. I can adjust the orientation of the FadingEdge and the size of the FadingEdge but not the colour. Is it possible?
Asked
Active
Viewed 7,056 times
3 Answers
14
You'll need to create a new class that extends ListView.
package com.mypackage;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class ColorFadeListView extends ListView
{
// fade to green by default
private static int mFadeColor = 0xFF00FF00;
public ColorFadeListView(Context context, AttributeSet attrs)
{
this(context, attrs,0);
}
public ColorFadeListView(Context context, AttributeSet attrs, int defStyle)
{
super(context,attrs,defStyle);
setFadingEdgeLength(30);
setVerticalFadingEdgeEnabled(true);
}
@Override
public int getSolidColor()
{
return mFadeColor;
}
public void setFadeColor( int fadeColor )
{
mFadeColor = fadeColor;
}
public int getFadeColor()
{
return mFadeColor;
}
}
You can use this list view identically to a normal ListView
(though you'll have to cast it properly to use the fadeColor accessor methods). In your XML, instead of defining an object as <ListView android:properties.../>
define it as <com.mypackage.ColorFadeListView android:properties.../>

Thomson Comer
- 3,919
- 3
- 30
- 32
-
Is there any way to accomplish with the fading edge on the actionbar for honeycomb? – draksia Mar 12 '12 at 14:37
-
1This doesn't work for me on a Motorola Razer (Android 2.3.5). I get the size 30 fade areas, but they are black. Works on a 2.3 emulator though and on a HTC Desire S with Android 2.3.5. – sleep Mar 21 '12 at 07:14
5
Yes you can !
setCacheColorHint(Color.WHITE);

William Remacle
- 1,480
- 2
- 16
- 24
-
Thanks, that does do what I want, but it also sets the background colour while scrolling. Is there a way to separate the two? – NotACleverMan Oct 29 '10 at 13:07
-
2
-
And give your listView the same background as the cells. Obviously won't work with images as background (see solution below) – bernstein May 16 '11 at 12:28
0
You can try this (it's a hack, I know):
int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);
I took advantage of the fact that the glow effect is actually a shared Drawable and applied a filter on it: http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/

Menny
- 473
- 6
- 13