2

谁能告诉我为什么我不能在下面的代码中调用 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;
    }
}

我永远无法输出日志,这意味着从未调用过此函数,而此列表视图实际上已过度滚动。听到您的想法,我将非常感激。

4

3 回答 3

1

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

OverScroll ListView 示例代码

于 2013-06-08T09:14:51.513 回答
0

只是……如果它需要某人。我在Github上分享了工作示例。

在 2.3+ 上运行良好

于 2014-05-06T06:12:16.333 回答
0

方法是onOverScrolled,不是onOverScroll

@Override您可以通过将方法签名放在上面来检测这些错误。编译器会让你知道你是否真的覆盖了一个方法。

于 2015-08-01T17:15:06.717 回答