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位置正确存储到包中并从包中检索。
答案 0 :(得分:0)
通过修改第一个代码解决了问题:
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?