码迷,mamicode.com
首页 > 其他好文 > 详细

ListView到顶部不可再拉

时间:2015-09-01 12:09:05      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

ListView到顶部不可再拉,主要针对魅族、索爱等手机;

如果你的程序针对的是2.3及以上版本,可以直接调用AbsListView的setOverScrollMode方法来解决这个问题。
如果还要兼容2.12.2的话,可以通过反射来操作。
参数总共有三个值:
public static final int OVER_SCROLL_ALWAYS = 0;
public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1;
public static final int OVER_SCROLL_NEVER = 2;

设置为OVER_SCROLL_NEVER即可。
setOverScrollMode(View.OVER_SCROLL_NEVER)

看看有效果吗?
请参考:
http://developer.android.com/reference/android/widget/AbsListView.html#setOverScrollMode(int)
http://developer.android.com/reference/android/view/View.html#OVER_SCROLL_NEVER

2.2大多数ROM是没有这个下拉效果的,目前我只在一台索爱的机器上看到过。
反射是指Java的反射机制,通过class的getMethod方法去操作,比如:
Java code
Method method = AbsListView.class.getMethod("setOverScrollMode",int.class);

再调用method的invoke就可以了。

反射相关的知识可以参考这里:http://tianna55555.iteye.com/blog/1662972

 

public static void disableScrollMode(View view) {
    try {
        Method method = AbsListView.class.getMethod("setOverScrollMode", int.class);
        @SuppressWarnings("rawtypes")
        Class viewCls = view.getClass();
        int OVER_SCROLL_NEVER = (Integer) viewCls.getField("OVER_SCROLL_NEVER").get(view);
        method.invoke(view, OVER_SCROLL_NEVER);
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }
}

 

ListView到顶部不可再拉

标签:

原文地址:http://www.cnblogs.com/rabbit-ak-star/p/4775086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!