修改ScrollView头部底部阴影颜色

**

本文内容转载自 https://www.2cto.com/kf/201802/719767.html 原文名:Scrollview&RecycleView&ListView&Viewpager的顶部/底部阴影颜色改变

如有问题请及时联系删帖

**

ScrollView头部底部阴影颜色会跟随color文件中的#FF0000默认一样,我在写布局的时候用这个值的地方多了,要改很麻烦,就找了这个方法

try {
            //修改头部阴影颜色
            Field topMethod = ScrollView.class.getDeclaredField("mEdgeGlowTop");
            topMethod.setAccessible(true);
            EdgeEffect top = (EdgeEffect) topMethod.get(scrollView);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                top.setColor(Color.RED);
            }
            //修改底部阴影颜色
            Field bottomMethod = ScrollView.class.getDeclaredField("mEdgeGlowBottom");
            bottomMethod.setAccessible(true);
            EdgeEffect bottom = (EdgeEffect) bottomMethod.get(scrollView);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                bottom.setColor(Color.RED);
            }
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

ScrollView有个setEdgeEffectColor方法,直接用会报NoSuchMethodError异常。

java.lang.NoSuchMethodError: No virtual method setBottomEdgeEffectColor(I)V in class Landroid/widget/ScrollView; 
or its super classes (declaration of 'android.widget.ScrollView' appears in /system/framework/framework.jar:classes2.dex)

ScrollView有两个颜色属性不知道怎么用

android:outlineSpotShadowColor=""
android:outlineAmbientShadowColor=""

你可能感兴趣的:(修改ScrollView头部底部阴影颜色)