首页 > 代码库 > listview 使用overscroll 解决 上拉下拉 时候 边界出现阴影 并且自定义图案
listview 使用overscroll 解决 上拉下拉 时候 边界出现阴影 并且自定义图案
以下代码都需要在 2.3以后可以使用。。现在基本都过了2.3了吧。。
先看一下 默认的 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 这两层的下面一层。。
这样就可以实现效果啦。。
listview 使用overscroll 解决 上拉下拉 时候 边界出现阴影 并且自定义图案
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。