Ist es möglich, die Farbe des FadingEdge eines Listview zu ändern?
Frage
Ich möchte den Effekt geben, dass das Listview aus verblasst, was auch immer um ihn herum ist. Standardmäßig wird es auf, was Farbe Ihre Listview ist. Ich kann die Ausrichtung des FadingEdge und die Größe des FadingEdge anpassen, aber nicht die Farbe. Ist es möglich?
Lösung
Ja, Sie können!
setCacheColorHint(Color.WHITE);
Andere Tipps
Sie müssen eine neue Klasse erstellen, die Listview erweitert.
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;
}
}
Sie können diese Listenansicht verwenden, identisch zu einem normalen ListView
(obwohl man es werfen müssen werde richtig die fadeColor Accessormethoden zu verwenden). In Ihrem XML, anstatt ein Objekt als <ListView android:properties.../>
definieren definiert es als <com.mypackage.ColorFadeListView android:properties.../>
Sie können versuchen, diese (es ist ein Hack, ich weiß):
int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);
Ich nutzte die Tatsache, dass der Leuchteffekt ist eigentlich eine gemeinsame Drawable und angelegt, um einen Filter auf sie: http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/