0

我正在開發應用程序,它必須加載和預覽TXT文件。爲此,我決定使用WebView代替TextView作爲那些TXT文件。我想預覽超過50000行。所以,我認爲使用WebView會更容易。在Android中的WebView中加載大型TXT文件

另外,我想保留scrollprogress,當用戶旋轉屏幕(或)導航離開活動。所以,我實現了WebViewClient如下面的代碼:

private class MyWebViewClient extends WebViewClient { 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 

     super.onPageFinished(view, url); 
     view.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       float webviewsize = mWebView.getContentHeight() 
         - mWebView.getTop(); 
       float positionInWV = webviewsize * mProgressToRestore; 
       int positionY = Math.round(mWebView.getTop() + positionInWV); 
       mWebView.scrollTo(0, positionY); 
       mConfigurationHasChanged = false; 
      } 
      // Delay the scrollTo to make it work 
     }, 150); 

    } 
} 

較小的文件時,這做工精細(最多也許3000-5000行文字)。但是在更大的文件中發生問題。

方法public void onPageStarted(WebView view, String url, Bitmap favicon)完成它的工作。但是,文本不會顯示幾秒鐘,並且最終顯示時,滾動過程不會恢復,而是從開始顯示該文件。我認爲,這是因爲WebView需要加載這些大文件的額外時間。 這裏我的問題是,如果有任何其他方式讓我知道什麼時候文本將在WebView中顯示的大小(類似onPageFinished)。所以,我可以成功恢復滾動進度。 所有其他的好主意都很好:)。

感謝,

回答

0

onPageStarted/onPageFinished只能告訴你,當你完成數據裝載斷網,而不是當頁面實際顯示在屏幕上。要確定什麼時候滾動的'正確'時刻看到我的答案在這裏:https://stackoverflow.com/a/21095453/2977376