我试图在滚动达到最大值后拉动 webView “反弹”(有点像“拉动刷新”效果)。
我的自定义视图扩展了 WebView,并覆盖了该方法
@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)
{
VerticalOverScrollController.Result result = overscrollController.calcVerticalOverScroll(deltaY, scrollY);
Log.d("overScrollBy", "scrollY " + result.scrollY + " overScrollY " + result.overScrollY);
return super.overScrollBy(deltaX, deltaY, scrollX, result.getScrollY(), scrollRangeX, scrollRangeY, maxOverScrollX, result.getOverScrollY(), isTouchEvent);
}
和calcVerticalOverScroll是
public Result calcVerticalOverScroll(final int deltaY, final int scrollY)
{
Result result = new Result();
if (scrollY <= 0 && deltaY < 0)//if at top and pulling down...
{
result.scrollY = (maxTopOverScroll > 0) ? scrollY : 0;
result.overScrollY = maxTopOverScroll;
} else
{
result.scrollY = (maxBottomOverScroll > 0) ? scrollY : 0;
result.overScrollY = maxBottomOverScroll;
}
return result;
}
结果只是
public static class Result
{
int scrollY;
int overScrollY;
... getters()
}
问题是,这在 KitKat 之前的任何视图(包括webview)上都非常有效。
在 KitKat 之后,除了 WebView 之外的任何视图都可以完美运行,其中scrollY的日志始终为 0。
关于此版本的 WebView 可能发生的变化有什么想法吗?
如果这不成功,关于如何在 WebView 上正确实现 overScroll 效果的任何想法?
提前致谢。