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

这篇博客介绍了如何去除ListView的默认下拉阴影并替换为自定义图片。通过一行代码即可禁用阴影,然后通过反射机制修改AbsListView的内部字段实现更换颜色或使用图片资源作为滚动边缘效果。详细步骤包括获取EdgeEffect类的mGlow和mEdge属性,并设置为自定义的ColorDrawable。
摘要由CSDN通过智能技术生成

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

43d660bc66a2bf0e1c8d0db03fa00969.png

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

play_listview.setOverScrollMode(android.view.View.OVER_SCROLL_NEVER);

这样的话就可以去掉 阴影了。。

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

8a4a9b8824485c7e5305a7e2e95f5895.png

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

@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 这两层的下面一层。。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值