永远不会调用android ListView onOverScroll

时间:2012-11-15 13:34:22

标签: android listview overscroll

任何人都可以告诉我为什么我无法在以下代码中调用onOverScrolled:

   public class KasOverScrollListenableListView extends ListView {

    public interface OverScrollListener{
        void onOverScroll(int scrollx, int scrollY,boolean clampedX, boolean clampedY );
    }
    private OverScrollListener mOverScrollListener= null;
    public KasOverScrollListenableListView(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    public KasOverScrollListenableListView(Context context, AttributeSet attrs){
        this(context,attrs,0);
    }

    public KasOverScrollListenableListView(Context context){
        this(context,null,0);
    }

    protected void onOverScroll(int scrollX, int scrollY, boolean clampedX, boolean clampedY){
         Log.i("overScrolling", "overScrolling is " + scrollY);
        // if the version of the system higher than 2.3 then do the following things.
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD){
//          super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
            if(null != mOverScrollListener ){
                mOverScrollListener.onOverScroll(scrollX, scrollY, clampedX, clampedY);
            }
        }

    }

    public void setOnOverScrollListener(OverScrollListener listener){
        mOverScrollListener = listener;
    }
}

我永远无法输出日志,这意味着这个函数从未被调用,而这个列表视图实际上已经过度滚动。我真的很感激听到你的想法。

3 个答案:

答案 0 :(得分:1)

不确定这是否有帮助,但以下链接中的示例调用super.overScrollBy(...)。我可以使用此代码访问onOverScroll。希望它有所帮助...

OverScroll ListView Sample code

答案 1 :(得分:0)

只是......如果它需要某人。我在Github上分享了工作样本。

在2.3 +上正常工作

答案 2 :(得分:0)

该方法为onOverScrolled,而非onOverScroll

您可以通过将@Override放在方法签名之上来检测这些错误。如果您确实覆盖了某个方法,编译器会通知您。