【问题标题】:Loading large TXT file in WebView in Android在 Android 的 WebView 中加载大型 TXT 文件
【发布时间】:2014-08-15 16:28:26
【问题描述】:

我正在开发必须加载和预览 TXT 文件的应用程序。为此,我决定使用 WebView 而不是 TextView 作为那些 TXT 文件。我想预览超过 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 需要额外的几秒钟来加载这些大文件。 我的问题是,是否有任何其他方法可以让我知道文本将在 WebView 中显示大小的确切时间(类似于onPageFinished)。所以,我可以成功恢复滚动进度。 所有其他好主意都很好:)。

谢谢,

【问题讨论】:

    标签: android android-webview android-browser android-websettings


    【解决方案1】:

    onPageStarted/onPageFinished 仅告诉您何时完成从网络加载数据,而不是页面实际显示在屏幕上的时间。要确定何时是滚动的“正确”时刻,请在此处查看我的答案:https://stackoverflow.com/a/21095453/2977376

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 2018-12-25
      • 2014-01-19
      • 2014-02-28
      • 2014-04-11
      • 1970-01-01
      相关资源
      最近更新 更多