2014-09-30 92 views
1

我有一个webView,在那里我显示从后端获取的HTML。
我的问题是,我正在尝试显示一个加载消息,并在页面完成后才显示内容。 为此,我尝试使用onPageFinished,这是winda的工作原理,但并不完全,因为它是在数据获取后调用的,但在显示页面之前调用,所以我仍然显示大约1秒的空白屏幕,最后才显示HTML。如何在完成显示内容后才能看到WebView?

oficial docs

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); 
} 
+0

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

回答

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/"); 
+0

是的,我试过这样的东西,但似乎没有任何工作 – 2014-10-01 20:35:25

0

您可以考虑使用先进的网页视图图书馆为Android提供一个接口,reaspond当页面开始加载和时完成! here (AdvancedWebView)

相关问题