我目前在使用 Android webview scrollTo 功能时遇到问题。我让它正常工作(有时),但是当我点击 webview 中的链接时,它有时会将屏幕重置回 0,0 位置。
这是我的代码。
public void onPageFinished(WebView webview, String Url) {
final WebView newView = webview;
if (ScrollX > 0) { // <-- int variable containing users Scroll position
newView.postDelayed(new Runnable() {
public void run() {
if (view.getScrollX() > 0) {
// ScrollX and ScrollY sometimes get reset before scrollTo happens, Why?
newView.scrollTo(ScrollX, ScrollY);
pageloaded = true;
} else {
newView.scrollTo(ScrollX, ScrollY);
newView.post(this);
}
}
}, 10);
}
}
所以这就是发生的事情。在我的 webviews onPageFinished 上,我将我的 webviews 滚动位置从默认的 0,0 更改为用户将滚动位置设置为的任何值。我使用 webviews postDelayed 来延迟事情,直到 webview 完全加载。每隔 10 毫秒,我的 postDelayed 会检查 webviews getScrollX() 是否返回 > 0(表示 webview 已加载)。如果是这样,它会更改代码的 webview 滚动位置部分,并最终确定 webview 已加载。如果没有,代码会在尝试设置 webviews 滚动位置后重新运行。这样下一次,我的 if 语句可以评估为 true 并避免重新运行代码部分。
现在问题来了,当我使用 view.getScrollX() > 0 来确定是否已加载 webview 时,它工作正常。但有时, view.getScrollX() > 0 将评估为真。但是当我使用 webview scrollTo 函数时,我的 ScrollX 和 ScrollY 变量在 scrollTo 之前或在使用 scrollTo 期间被重置,并且 webview 只是回到 0,0。这里发生了什么?