我希望ListView看起来像从周围淡出。默认情况下,它会设置为与您的ListView颜色相同的颜色。我可以调整FadingEdge的方向和大小,但无法更改颜色。这可能吗?
你需要创建一个继承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;
}
}
您可以将此列表视图与普通的 ListView
完全相同(尽管您必须正确地进行转换以使用 fadeColor 访问器方法)。在您的 XML 中,不要定义一个对象为<ListView android:properties.../>
,而是定义为<com.mypackage.ColorFadeListView android:properties.../>
setCacheColorHint(Color.WHITE);
int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);
我利用发光效果实际上是一个共享的可绘制对象,并在其上应用了滤镜:http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/