Est-il possible de changer la couleur du FadingEdge d'un Listview?
Question
Je veux donner l'effet que le ListView a disparu de tout ce qui est autour d'elle. Par défaut, il est réglé sur quelle que soit la couleur de votre ListView est. Je peux régler l'orientation du FadingEdge et la taille de la FadingEdge mais pas la couleur. Est-il possible?
La solution
Oui, vous pouvez!
setCacheColorHint(Color.WHITE);
Autres conseils
Vous aurez besoin de créer une nouvelle classe qui étend 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;
}
}
Vous pouvez utiliser cette vue liste identique à une ListView
normale (bien que vous devrez jeter correctement utiliser les méthodes fadeColor accesseur). Dans votre XML, au lieu de définir un objet comme <ListView android:properties.../>
définir comme <com.mypackage.ColorFadeListView android:properties.../>
Vous pouvez essayer (c'est un hack, je sais):
int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);
Je profite du fait que l'effet de lumière est en fait un Drawable et appliqué un filtre partagé sur elle: http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/