2

我正在使用屏幕上有2個片段的平板電腦應用程序。一個片段是一個WebView。默認情況下,用戶沒有得到任何反饋,讓他們知道網頁正在加載。以很好的方式在WebView片段中顯示進度

爲了讓用戶反饋,我在頁面加載開始時顯示進度對話框,並在頁面結束時將其刪除。除非鏈接重定向多次,否則這在大多數情況下都能正常工作。

當發生重定向時,會顯示和解除多次對話,看起來很糟糕。我想如果我能夠阻止背景變暗的對話是可以接受的,但在尋找一段時間之後,我還沒有找到一種方法來做到這一點。

理想情況如果我可以在webview片段的中心添加一個加載欄並在完成時隱藏/解除它,那將會很好。有任何想法嗎?

private class InnerWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     view.loadUrl(url); 
     return true; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     if (dialog==null) 
      dialog = new ProgressDialog(getActivity()); 
     dialog.setMessage("Loading..."); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     dialog.show(); 
     Log.d("WEBVIEW", "loading "+ url); 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     dialog.dismiss(); 
     mUrl=url; // save final url so user can open in deafult browser 
     super.onPageFinished(view, url); 
    } 

} 

回答

2

我剛剛在我認爲是一個非常優雅的方式做了這個。

我做了一個自定義佈局,其中包含一個webview和一個進度對話框。當網頁在onPageStarted中加載時,此對話框初始設置爲GONE並設置爲可見。它在onPageFinished方法中再次設置爲GONE。

片段膨脹並在onCreateView方法中返回此自定義視圖。