2

Я работаю над приложением планшета, на котором есть 2 фрагмента на экране. Один фрагмент - это 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

Я только что сделал это в том, что я считаю очень элегантным.

Я сделал собственный макет, который содержит веб-просмотр и диалог прогресса в центре. Первоначально этот диалог задан как GONE и отображается, когда веб-страница загружается в onPageStarted. Он установлен в GONE снова в методе onPageFinished.

Фрагмент раздувает и возвращает этот пользовательский вид в методе onCreateView.