【问题标题】:Showing progress in a WebView Fragment in a nice way以一种很好的方式在 WebView 片段中显示进度
【发布时间】:2012-05-25 00:11:38
【问题描述】:

我正在开发一个屏幕上有 2 个片段的平板电脑应用程序。一个片段是 WebView。默认情况下,用户不会收到任何反馈让他们知道网页正在加载。

为了给用户反馈,我会在页面加载开始时显示进度对话框,并在页面完成后将其删除。这在大多数情况下都很有效,除非链接重定向多次。

当发生重定向时,对话会多次显示并关闭,这看起来很糟糕。我想如果我可以停止对话使背景变暗是可以接受的,但是在搜索了一段时间后我没有找到这样做的方法。

理想情况下,如果我可以在 webview 片段的中心添加一个加载栏并在完成后隐藏/关闭它,那就太好了。有什么想法吗?

private class InnerWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        if (dialog==null)
            dialog = new ProgressDialog(getActivity());
        dialog.setMessage("Loading...");
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.show();
        Log.d("WEBVIEW", "loading "+ url);
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        dialog.dismiss();
        mUrl=url; // save final url so user can open in deafult browser
        super.onPageFinished(view, url);
    }

}

【问题讨论】:

    标签: android android-fragments android-webview progressdialog android-4.0-ice-cream-sandwich


    【解决方案1】:

    我刚刚以我认为非常优雅的方式完成了这项工作。

    我制作了一个自定义布局,其中包含一个 webview 和一个位于中心的进度对话框。此对话框最初设置为 GONE,并在 onPageStarted 中加载网页时设置为可见。在 onPageFinished 方法中再次设置为 GONE。

    Fragment 在 onCreateView 方法中膨胀并返回此自定义视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 2017-09-24
      • 2018-05-14
      • 1970-01-01
      • 2017-02-12
      相关资源
      最近更新 更多