0

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 に表示される正確な瞬間を知る方法が他にあるかどうかです。したがって、スクロールの進行状況を正常に復元できます。他のすべての良いアイデアは大歓迎です:)。

ありがとう、

4

1 に答える 1