解决方案 »

  1.   

    如果你的程序针对的是2.3及以上版本,可以直接调用AbsListView的setOverScrollMode方法来解决这个问题。
    如果还要兼容2.1,2.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即可。当然如果厂商的ROM忽略了这个属性,那就真的没有办法了~
      

  2.   


    添加代码: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
      
      

  3.   

    2.2大多数ROM是没有这个下拉效果的,目前我只在一台索爱的机器上看到过。
    反射是指Java的反射机制,通过class的getMethod方法去操作,比如:
    Method method = AbsListView.class.getMethod("setOverScrollMode",int.class);
    再调用method的invoke就可以了。反射相关的知识可以参考这里:http://tianna55555.iteye.com/blog/1662972
      

  4.   

    再次感谢你的回答!我这边有一台三星2.2系统的手机会有这种效果!2.2的AbsListView里面也有这个方法!但是貌似不能用!也就是说2.2可以通过这个反射方法,才能setOverScrollMode,而2.3就直接可以设置是吧!
      

  5.   

    我用了一个网上listview下拉控件,发现下拉长时间不松口,再松开,画面就不动了。再点击一下画面就好了。
      

  6.   

    很有帮助
    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();
    }
    }