listview 使用overscroll 解决 上拉下拉 时候 边界出现阴影 并且自定义图案

来源:互联网 发布:sql 日期排序 编辑:程序博客网 时间:2024/05/16 12:45


以下代码都需要在 2.3以后可以使用。。现在基本都过了2.3了吧。。

http://blog.csdn.net/wanghao200906/article/details/42004007

先看一下 默认的 listview下拉是什么情况  


这个是蓝色的 阴影部分。先说怎么去掉他吧。。只用一行代码就可以

play_listview.setOverScrollMode(android.view.View.OVER_SCROLL_NEVER);
这样的话就可以去掉 阴影了。。

下面来个高端一些的。。更换一下 蓝色的 阴影 并且把 蓝色阴影编程图片。。




下面是方法看不懂的可以直接使用。。

@SuppressWarnings("deprecation")public void setEdge(ListView lv) throws Exception, IllegalAccessException {Class<?> c = (Class<?>) Class.forName(AbsListView.class.getName());Field egtField = c.getDeclaredField("mEdgeGlowTop");Field egbBottom = c.getDeclaredField("mEdgeGlowBottom");egtField.setAccessible(true);egbBottom.setAccessible(true);Object egtObject = egtField.get(lv); // this 指的是ListiVew实例Object egbObject = egbBottom.get(lv);// egtObject.getClass() 实际上是一个 EdgeEffect 其中有两个重要属性 mGlow mEdge// 并且这两个属性都是Drawable类型Class<?> cc = (Class<?>) Class.forName(egtObject.getClass().getName());Field mGlow = cc.getDeclaredField("mGlow");mGlow.setAccessible(true);mGlow.set(egbObject, new ColorDrawable(Color.RED));mGlow.set(egtObject,this.getResources().getDrawable(R.drawable.ic_launcher));// mGlow.setBoolean(egtObject, false);//取消显示Field mEdge = cc.getDeclaredField("mEdge");mEdge.setAccessible(true);mEdge.set(egtObject, new ColorDrawable(Color.RED));mEdge.set(egbObject, new ColorDrawable(Color.RED));}

把listview传进来。就可以啦。。有两个参数要注意

不论是 向下滑动还是向上滑动  可以发现有两层。。

mGlow   这这两层的上面一层

mEdge 这两层的下面一层。。

这样就可以实现效果啦。。






0 0
原创粉丝点击