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