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/

10-12 00:25
查看更多