【问题标题】:onPageFinished in WebViewClient doesn't seem to fire correctlyWebViewClient 中的 onPageFinished 似乎无法正确触发
【发布时间】:2011-12-08 20:32:27
【问题描述】:

我看到了另一个关于此的 SO 问题,但没有解决。

我正在使用 LoadData() 和应用程序生成的 html。

我注意到,当我在新文本后添加几行空白行时,页面滚动并且文本需要一段时间才能神奇地出现(没有滚动,它只是以淡入的形式出现)。

观看 .getContentHeight() 它不会在 onPageFinshed() 事件中更新,但会在页面上后续添加文本时更新。

我创建了一个计时器事件来监视 getContentHeight。即使在我发现 getContentHeight 已更改并发出 browser.pageDown(true) 之后,页面仍然滚动到底部。

第一次进入活动时似乎工作正常。我的问题只发生在我向 newInnerHTML 添加几行时。

此外,所涉及的视图还有一个页眉和页脚,中间是浏览器。 webView 不在页脚后面。

这是一个错误,还是我遗漏了什么?

TIA, 吉姆

此代码在活动的 onCreate 中。

        final WebView browser = (WebView) findViewById(R.id.webview);
        browser.setWebViewClient(new WebViewClient() {  
            @Override  
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(browser, url);
              //  browser.computeScroll();  //didn't help
                Log.d(TAG,"page getContentHeight: " + browser.getContentHeight());
                Log.d(TAG,"page finished");
                browser.pageDown(true);
            }  
        });

这个方法在activity的onCreate之后

私有 void UpdateMessageDisplay() {

     //loadData fires onPageFinished but without the new data
     browser.loadData("<html><body>" + newInnerHTML + "</body></html>", "text/html", "utf-8");
     //reload() again fires onPageFinished but this time with new data
     browser.reload();

}

【问题讨论】:

    标签: android webviewclient


    【解决方案1】:

    我在这里收到了部分答案,它确实触发了 pageDown(true)。

    webview loaddata scroll setting not updating till clicked

    还有一些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-10
      • 2017-09-10
      • 1970-01-01
      相关资源
      最近更新 更多