2011-01-23 72 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(); 
    } 
};