禁用滚动视图ListView、ViewPager、ScrollView、HorizontalScrollView、WebView边界颜色渐变

时间:2024-11-29 11:05:26

禁用滚动视图ListView、ViewPager、ScrollView、HorizontalScrollView、WebView边界颜色渐变

ListView、ViewPager、ScrollView、HorizontalScrollView、WebView等滚动试图控件在高版本(一般是2.3及以上版本)上边界会显示一个渐变的颜色,下面是去掉这些颜色的方法:

1、ListView的父类AbsListView.java中有以下的一个方法:

@Override

public void setOverScrollMode(int mode) {

if (mode != OVER_SCROLL_NEVER) {

if (mEdgeGlowTop == null) {

Context context = getContext();

mEdgeGlowTop = new EdgeEffect(context);

mEdgeGlowBottom = new EdgeEffect(context);

}

} else {

mEdgeGlowTop = null;

mEdgeGlowBottom = null;

}

super.setOverScrollMode(mode);

}

在低版本上面没有这个方法,就是这个mEdgeGlowTop、mEdgeGlowBottom这两个货导致的边界渐变颜色。解决方法如下:你可以在自定义的ListView中调用,也可以在Activity或者Fragment的ListView属性调用:

try {

Method method = getClass().getMethod("setOverScrollMode", int.class);

Field field = getClass().getField("OVER_SCROLL_NEVER");

if(method != null && field != null){

method.invoke(this, field.getInt(View.class));

}

} catch (Exception e) {

e.printStackTrace();

}

2、ScrollView、HorizontalScroll以及WebView的情况和ListView相同,处理方法也一样。

3、ViewPager有些特殊,需要特殊处理,请参考我的这篇博客:http://www.cnblogs.com/xinye/p/3142704.html