WebView OverScroll

Che*_*rra 9 android webview overscroll

我想在滚动达到最大值后拉动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);
}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

和结果是​​公正的

  public static class Result
{
    int scrollY;
    int overScrollY;

    ... getters()
}
Run Code Online (Sandbox Code Playgroud)

问题是,这适用KitKat之前的任何视图(包括webview).

在KitKat之后,除了WebView之外的任何视图可以完美地工作,其中scrollY的日志始终为0.

关于在这个版本的WebView上可能发生什么变化的任何想法?

如果这没有飞,任何关于如何正确实现WebView上的overScroll效果的想法?

提前致谢.

Kin*_*ses 3

Android 4.4 KitKat(Android 19)引入了基于 Chromium的新版本WebView 。在这个 chromium 浏览器中,他们从 webview 中删除了许多功能。

其中一些错误已报告给谷歌。检查链接恢复滚动位置功能在 KitKat 上不起作用

从链接来看,这也是报告的错误之一

在Android 4.4 KitKat上,可能与Chromium WebView有关,返回时不会恢复上一篇文章的滚动位置。

这不是这个问题的确切答案,只是指出了一些事情。但必须有一个解决方法可以在新的 webview 中执行此操作。让我检查一下并更新我的答案!