TXT ファイルを読み込んでプレビューする必要があるアプリを開発しています。この目的のために、これらの TXT ファイルとして TextView の代わりに WebView を使用することにしました。プレビューを50000行以上にしたいです。なので、WebView の方が使いやすいと思いました。
また、ユーザーが画面を回転させたとき (または) アクティビティから離れたときに、スクロールの進行状況を保持したいと考えています。そのため、次のコードとして 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 がこの大きなファイルをロードするために必要な数秒が余分にかかるためです。ここでの私の質問は、サイズ (のようなものonPageFinished
) に関してテキストが WebView に表示される正確な瞬間を知る方法が他にあるかどうかです。したがって、スクロールの進行状況を正常に復元できます。他のすべての良いアイデアは大歓迎です:)。
ありがとう、