如何在完成显示内容后才能看到WebView?
我有一个webView,在那里我显示从后端获取的HTML。
我的问题是,我正在尝试显示一个加载消息,并在页面完成后才显示内容。 为此,我尝试使用onPageFinished
,这是winda的工作原理,但并不完全,因为它是在数据获取后调用的,但在显示页面之前调用,所以我仍然显示大约1秒的空白屏幕,最后才显示HTML。如何在完成显示内容后才能看到WebView?
public void onPageFinished (WebView view, String url)
在API级别1 通知完成页面加载主机应用程序。这种方法仅适用于主框架。当onPageFinished()被调用时,渲染图片可能还没有被更新。要获取新图片的通知,请使用onNewPicture(WebView,Picture)。
的问题是,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);
}
我有一个片段的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/");
是的,我试过这样的东西,但似乎没有任何工作 – 2014-10-01 20:35:25
thia家伙之一http://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading-a-url-in-android说你必须设置一个新的WebViewClient并覆盖你在那里说的那个方法。 – eduyayo 2014-09-30 21:40:12