如何在完成显示内容后使WebView可见?

时间:2014-09-30 17:45:53

标签: android webview

我有一个webView,在那里我显示了一个从后端获取的HTML。
我的问题是我正在尝试显示加载消息,并仅在页面完成后显示内容。 为此,我尝试使用onPageFinished,winda可以工作,但不完全,因为它是在获取数据后调用的,但是在页面显示之前,所以我仍然显示一个空白屏幕1秒钟,最后显示HTML。

来自oficial docs

public void onPageFinished (WebView view, String url)

在API级别1中添加 通知主机应用程序页面已完成加载。仅为主框架调用此方法。调用onPageFinished()时,渲染图片可能尚未更新。要获取新图片的通知,请使用onNewPicture(WebView,图片)。

问题在于onNewPicture(WebView, Picture)deprecated

所以我的问题是,有没有办法知道页面何时完成,但也完全显示?

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.messageId = this.getIntent().getStringExtra(ITEM_ID_KEY);

    this.setUpActionBar();
    this.setContentView(R.layout.activity_inbox_item_detail);
    WebView view = (WebView) this.findViewById(R.id.webview);
    view.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView view, String url) {
            view.setVisibility(View.VISIBLE);
        }
    });
    this.fetchInboxDetailsTask(this.messageId);
}

2 个答案:

答案 0 :(得分:0)

我在片段中有一个WebView,仅供您参考,我已将其设置为这样。

可能你错过了什么。 "的 onPageFinished "对我来说效果很好。

onViewCreated方法

        mWebView = (WebView) view.findViewById(R.id.appWebView);
        mWebView.setWebViewClient(new WebViewClient()
        {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                // Handle the error
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url)
            {
                webViewProgressBar.setVisibility(View.GONE);
                super.onPageFinished(view, url);
            }
        });

然后:

        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setDomStorageEnabled(true);
        mWebView.getSettings().setSupportZoom(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.loadUrl("http://play.google.com/store/apps/");

答案 1 :(得分:0)

您可以考虑使用Android的高级Webview库,它提供了一个接口,以便在页面开始加载和完成时重新响应! here (AdvancedWebView)