2

画面に 2 つのフラグメントがあるタブレット アプリケーションに取り組んでいます。1 つのフラグメントは WebView です。デフォルトでは、ユーザーは Web ページが読み込まれていることを知らせるフィードバックを受け取りません。

ユーザー フィードバックを提供するために、ページの読み込みが開始されたときに進行状況ダイアログを表示し、ページが終了したら削除します。これは、リンクが複数回リダイレクトされる場合を除いて、ほとんどの場合うまく機能します。

リダイレクトが発生すると、ダイアログが表示され、何度も閉じられ、かなり見栄えが悪くなります。ダイアログが背景を暗くするのを止めることができればそれでいいと思いますが、しばらく探した後、これを行う方法が見つかりませんでした.

理想的には、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);
    }

}
4

1 に答える 1

2

私は非常にエレガントな方法だと思う方法でこれを行いました。

中央に Web ビューと進行状況ダイアログを含むカスタム レイアウトを作成しました。このダイアログは、最初は GONE に設定されており、onPageStarted で Web ページが読み込まれているときに表示されるように設定されています。onPageFinished メソッドで再び GONE に設定されます。

Fragment は onCreateView メソッドでこのカスタム ビューをインフレートして返します。

于 2012-05-25T00:37:12.810 に答える