3

我有一个自定义列表视图,我目前正在尝试在列表视图过度滚动(即超出其范围)时执行自定义行为。

一切都运行良好,除了过度滚动似乎只在用户拖动或甩动列表视图时才起作用,而它已经达到了极限。这意味着如果用户在列表位于第一个元素时进行了强烈的滚动,则列表将在到达最后一个元素时突然停止滚动,并且只有当用户向下滚动或向下拖动时,才会启动过度滚动功能。

我正在尝试使过度滚动正常工作,以便从列表顶部进行强力甩动。这种行为很奇怪,因为我可以看到“ overScrollBy”方法被调用了几次,并且deltaY值正确,但scrollY保持在 0。

我一直在网上寻找解决方案,但我没有找到任何材料。

这是我的overScrollBy实现:

@Override
    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)
    {
        if (!isTouchEvent)
        {
            deltaY = -scrollY / 10;

            if (Math.abs(deltaY) <= 1)
                deltaY = -scrollY;
        }

        if (mInPreviewMode && scrollY <= 0)
        {
            mSPListContainer.onOverScroll((float)Math.abs(scrollY) / (float)mMaxYOverscrollDistance);
        }

        super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);

        return true;
    }
4

0 回答 0