APP说明
我正在为Android EPub阅读器编写代码。
书本部分(html)已加载到WebView中
问题
设备旋转后,我尝试滚动到webview中的最后一个位置作为文本。
数据通过loadData(text,...,...)加载到webview中,因为我不是从URL加载网页,而是从EPub文件中本地保存的html加载网页。
webView.loadData(text, "text/html; charset=UTF-8", null);
我发现此功能是异步的,我必须等到数据完全加载后再尝试滚动。
我尝试过建议的解决方案,例如
final int Y = savedInstanceState.getInt(CURRENT_WEBVIEW_POSITION_Y);
webView.postDelayed(new Runnable() {
public void run() {
if (webView.getProgress() == 100) {
webView.postDelayed(new Runnable() {
public void run() {
webView.scrollTo(0, Y);
}
}, 10);
} else {
webView.post(this);
}
}
}, 10);
要么
final int Y = savedInstanceState.getInt(CURRENT_WEBVIEW_POSITION_Y);
while (webView.getProgress() < 100){
Thread.sleep(50);
}
Thread.sleep(10);
webView.scrollTo(0, Y);
但是他们没有用。
Webview的Y位置已正确存储到捆绑中并从捆绑中检索。
最佳答案
通过修改第一个代码解决了问题:
webView.postDelayed(new Runnable() {
@Override
public void run() {
if (webView.getContentHeight() > 0){
webView.scrollTo(0, Y);
webView.removeCallbacks(this);
} else {
webView.postDelayed(this, 10);
}
}
}, 10);
在这里解决Is there a listener for when the WebView displays it's content?
关于android - Android,加载数据后将Webview滚动到Y位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37407095/