Is it possible to change the colour of the FadingEdge of a Listview?

前端 未结 3 528
礼貌的吻别
礼貌的吻别 2020-12-09 23:52

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 t

相关标签:
3条回答
  • 2020-12-10 00:41

    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.../>

    0 讨论(0)
  • 2020-12-10 00:46

    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/

    0 讨论(0)
  • 2020-12-10 00:50

    Yes you can !

    setCacheColorHint(Color.WHITE);
    
    0 讨论(0)
提交回复
热议问题