我有一个自定义列表视图,我正在尝试执行自定义行为,以便列表视图过度滚动(即超出其范围)。
一切都运行得很好,除了过度滚动似乎只有当用户在列表视图已经达到极限时拖动或翻转列表视图时才会起作用。这意味着如果用户在列表位于第一个元素时执行强大的操作,则列表将在到达最后一个元素时突然停止滚动,并且只有当用户翻转或拖动时,才会启动过滚动功能。
我正在尝试使滚动条正常工作,以便从列表顶部强力推送。这种行为非常奇怪,因为我可以看到“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;
}