我想将过度滚动添加到ListView
,因此您可以比第一个或最后一个元素滚动得更远,当您释放时,它会快速回退。那里有很多教程和问题。所有人都说要创建一个自定义的ListView
类来覆盖overScrollBy()
并将我的自定义最大Y过度滚动距离传递给父类。
@Override
protected boolean overScrollBy(final int deltaX, final int deltaY, final int scrollX, final int scrollY,
final int scrollRangeX, final int scrollRangeY, final int maxOverScrollX, final int maxOverScrollY,
final boolean isTouchEvent) {
// This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable
// mMaxYOverscrollDistance;
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY,
maxOverScrollX, mMyMaxYOverscrollDistance, isTouchEvent);
}
事情是,如果你真的小心翼翼地过度滚动,这只能快速恢复。通常它会陷入过度滚动的位置。关于如何在任何情况下使其恢复的任何想法?
由于
答案 0 :(得分:0)
我可以通过减少最大过度滚动距离来解决这个问题:
@Override
protected boolean overScrollBy(final int deltaX, final int deltaY, final int scrollX, final int scrollY,
final int scrollRangeX, final int scrollRangeY, final int maxOverScrollX, final int maxOverScrollY,
final boolean isTouchEvent) {
final int maxYOverscroll = isTouchEvent ? mMaxYOverscrollDistance : (int) (Math.abs(scrollY) * 0.9f);
return super.overScrollBy(deltaX, deltaY / 2, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX,
maxYOverscroll, isTouchEvent);
}