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