我正在開發應用程序,它必須加載和預覽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
)。所以,我可以成功恢復滾動進度。 所有其他的好主意都很好:)。
感謝,