GetContentHeight()无法正常工作

时间:2011-01-23 11:53:27

标签: android webview

我正在尝试检索webview内容的高度。它包含一个html字符串。 问题是getContentHeight()总是返回相同的值(392),无论html-string是多长时间。

2 个答案:

答案 0 :(得分:3)

这个问题让我疯狂。让我猜一下:您的内容未从网络或文件系统加载,而是拨打WebView.loadData()WebView.loadDataWithBaseUrl()(您指定null或空字符串)在后一种情况下)。正确?

如果是,那么我想我有一个灵感来自this discussion的解决方案:请务必使用WebView.loadDataWithBaseUrl()方法并提供baseUrl不是null不是空字符串,并且对于不同的内容数据是不同的。根据SDK文档,baseUrl仅用于评估数据中的相对URL(例如<img>标记未在其src属性中指定域名),因此,如果您的数据不是引用外部内容我想你可以生成“虚拟”URL(没试过这个)。

似乎WebView正在查看网址,如果它没有更改,则loadData...的所有后续调用都将导致WebView的相同高度。

答案 1 :(得分:2)

我也遇到了getContetHeight()这个问题。 首先在WebViewClient.OnPageFinish()回调中,内容高度尚未设置,所以我所做的就是解决方案。

Handler h;
Runnable scroll_updater = new Runnable() {
    @Override
    public void run() {
        if(Thread.interrupted())
            return;

        if(lyrics.getContentHeight() == 0)
            h.postDelayed(this, 100);

        setLyricsScroll();
    }
};