2011-01-23 45 views

回答

3

这个问题迫使我坚持下去。让我猜一猜:您的内容不是从网络或文件系统加载的,而是您拨打WebView.loadData()WebView.loadDataWithBaseUrl()(其中您指定null或在后一种情况下为空字符串)。对?

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

看起来好像WebView正在查看网址,如果它不改变所有后续调用loadData...将导致WebView的高度相同。

+0

是的,就是这样。我终于通过在文本中插入锚点并立即跳转到此锚点来加载(我需要高度滚动一定数量)来解决问题。但我确实感到困惑,getcontentheight无法正常工作......非常感谢您的帮助! – nob 2011-04-07 07:35:56

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(); 
    } 
};