overScrollBy 并不总是在 Lollipop (5.x) 平台上反弹
overScrollBy doesn't always bounce back in Lollipop (5.x) platform
我已经根据以下 post 覆盖了 ScrollView
中的 overScrollBy
方法:
http://jasonfry.co.uk/blog/android-overscroll-revisited/
它在其他平台版本上工作正常,但如果对 ScrollView
应用投掷动作,Lollipop 无法弹回。
有人遇到过这个问题并找到了解决方法吗?
在构造函数中调用setOverScrollMode(OVER_SCROLL_ALWAYS);
这里是我在自定义中覆盖的相关代码 ScrollView
class:
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX,
int scrollY, int scrollRangeX, int scrollRangeY,
int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY,
scrollRangeX, scrollRangeY, maxOverScrollX, OVER_SCROLL_AMOUNT,
isTouchEvent);
}
谢谢。
我深入研究了 KitKat 和 Lollipop 之间的变化 ScrollView
。以下代码解决了我的问题。
@TargetApi(21)
@Override
public boolean dispatchNestedFling(float velocityX, float velocityY, boolean consumed) {
// Not consumed means it wasn't handled because ScrollView
// doesn't take over scrolling bounds into scroll range,
// so we fling it ourselves to get it bounce back
if (getOverScrollMode() == OVER_SCROLL_ALWAYS && !consumed) {
fling((int) velocityY);
return true;
} else {
return super.dispatchNestedFling(velocityX, velocityY, consumed);
}
}
我已经根据以下 post 覆盖了 ScrollView
中的 overScrollBy
方法:
http://jasonfry.co.uk/blog/android-overscroll-revisited/
它在其他平台版本上工作正常,但如果对 ScrollView
应用投掷动作,Lollipop 无法弹回。
有人遇到过这个问题并找到了解决方法吗?
在构造函数中调用setOverScrollMode(OVER_SCROLL_ALWAYS);
这里是我在自定义中覆盖的相关代码 ScrollView
class:
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX,
int scrollY, int scrollRangeX, int scrollRangeY,
int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY,
scrollRangeX, scrollRangeY, maxOverScrollX, OVER_SCROLL_AMOUNT,
isTouchEvent);
}
谢谢。
我深入研究了 KitKat 和 Lollipop 之间的变化 ScrollView
。以下代码解决了我的问题。
@TargetApi(21)
@Override
public boolean dispatchNestedFling(float velocityX, float velocityY, boolean consumed) {
// Not consumed means it wasn't handled because ScrollView
// doesn't take over scrolling bounds into scroll range,
// so we fling it ourselves to get it bounce back
if (getOverScrollMode() == OVER_SCROLL_ALWAYS && !consumed) {
fling((int) velocityY);
return true;
} else {
return super.dispatchNestedFling(velocityX, velocityY, consumed);
}
}