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效果的想法?
提前致谢.
Android 4.4 KitKat(Android 19)引入了基于 Chromium的新版本WebView 。在这个 chromium 浏览器中,他们从 webview 中删除了许多功能。
其中一些错误已报告给谷歌。检查链接:恢复滚动位置功能在 KitKat 上不起作用
从链接来看,这也是报告的错误之一
在Android 4.4 KitKat上,可能与Chromium WebView有关,返回时不会恢复上一篇文章的滚动位置。
这不是这个问题的确切答案,只是指出了一些事情。但必须有一个解决方法可以在新的 webview 中执行此操作。让我检查一下并更新我的答案!
| 归档时间: |
|
| 查看次数: |
2840 次 |
| 最近记录: |