android ListView onOverScroll永远不会被调用



谁能告诉我为什么我不能在下面的代码中调用OverScrolled:

   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;
    }
}

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

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

过度滚动列表查看示例代码

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

在 2.3+ 上工作正常

该方法是onOverScrolled,而不是onOverScroll

可以通过在方法签名上方放置@Override来检测这些 bug。 编译器会让你知道你是否真的在重写一个方法。

最新更新