我有一个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);
}
答案 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)