热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android去掉ListView顶部和底部的蓝色渐变效果

觉得这个东西不好看,就想把它去掉。网上查了一些资料,找到了源码中设置这种效果的地方:AbsListView类中的两个成员变量:

觉得这个东西不好看,就想把它去掉。网上查了一些资料,找到了源码中设置这种效果的地方:
AbsListView类中的两个成员变量:

private EdgeEffect mEdgeGlowTop;
private EdgeEffect mEdgeGlowBottom;

然后再看看EdgeEffect类的源码:

EdgeEffect类中有两个成员变量:

private final Drawable mEdge;private final Drawable mGlow;

在创建EdgeEffect实例时,会加载系统资源R.drawable.overscroll_edge和R.drawable.overscroll_glow对其进行赋值。

想要去掉这种效果的话,只要通过反射,将这两个属性设置为空白的Drawable资源就行了。代码如下:

1 /**
2 * 去掉ListView顶部和底部的蓝色渐变
3 *
4 * @param absListView
5 */
6 public static void cancelFadingEdge(AbsListView absListView) {
7
8 // 创建EdgeEffect实例,将mEdge和mGlow设置为空的Drawable
9 EdgeEffect edgeEffect = new EdgeEffect(absListView.getContext());
10 Class eeClz = edgeEffect.getClass();
11 setField(eeClz, "mEdge", edgeEffect, new ColorDrawable());
12 setField(eeClz, "mGlow", edgeEffect, new ColorDrawable());
13
14 // 给ListView的mEdgeGlowTop和mEdgeGlowBottom赋值
15 try {
16 Class lvClz = Class.forName("android.widget.AbsListView");
17 setField(lvClz, "mEdgeGlowTop", absListView, edgeEffect);
18 setField(lvClz, "mEdgeGlowBottom", absListView, edgeEffect);
19 } catch (Exception e) {
20 e.printStackTrace();
21 }
22 }
23
24 /**
25 * 通过反射的方式设置变量的值
26 *
27 * @param clz
28 * 属性所在类的Class
29 * @param fieldName
30 * 属性名
31 * @param obj
32 * 要赋值的对象
33 * @param value
34 * 值
35 */
36 private static void setField(Class clz, String fieldName, Object obj,
37 Object value) {
38 try {
39 Field field = clz.getDeclaredField(fieldName);
40 field.setAccessible(true);
41 field.set(obj, value);
42 } catch (Exception e) {
43 e.printStackTrace();
44 }
45 }

 

 

注意:

mEdge.set(edgeEffect, new ColorDrawable());
mEdgeGlowTop.set(absListView, edgeEffect);

这两个地方不能将属性设置为null,否则会出现空指针异常,因为源码里认为它们不为空,进行了一些操作。


转:https://www.cnblogs.com/koa875/p/3680432.html



推荐阅读
author-avatar
地之南_816
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有