2014-09-30 60 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)

相關問題