2015-05-16 5 views
0

У меня есть код, в котором появляется диалог выполнения с основным макетом. Я хочу, чтобы диалог прогресса находился на переднем крае и основной макет в фоновом режиме, как показано на рисунке enter link description here.установить диалог прогресса по основному макету

public class MainActivity extends Activity { 
    private WebView webView; 
    private EditText urlEditText; 
    private ProgressBar progress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     urlEditText = (EditText) findViewById(R.id.urlField); 
     webView = (WebView) findViewById(R.id.webView); 
     webView.setWebViewClient(new MyWebViewClient()); 

     progress = (ProgressBar) findViewById(R.id.progressBar); 
     progress.setVisibility(View.GONE); 
     Button openUrl = (Button) findViewById(R.id.goButton); 
     openUrl.setOnClickListener(new OnClickListener() { 

      @SuppressLint("SetJavaScriptEnabled") 
      @Override 
      public void onClick(View view) { 
       String url = urlEditText.getText().toString(); 
       if (validateUrl(url)) { 
        webView.getSettings().setJavaScriptEnabled(true); 
        webView.loadUrl(url); 

       } 
      } 

      private boolean validateUrl(String url) { 
       return true; 
      } 
     }); 

    } 

    private class MyWebViewClient extends WebViewClient { 
     @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      progress.setVisibility(View.GONE); 
       MainActivity.this.progress.setProgress(100); 
      super.onPageFinished(view, url); 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      progress.setVisibility(View.VISIBLE); 
      MainActivity.this.progress.setProgress(0); 
      super.onPageStarted(view, url, favicon); 
     } 
    } 

    public void setValue(int progress) { 
     this.progress.setProgress(progress);   
    } 
} 
+0

не могли бы вы отправить xml-код? –

+0

hre is link http://imgur.com/6FvgMss –

+0

Попробуйте разместить веб-просмотр под ссылкой на urlContainer вместо progressbar. –

ответ

0

Попробуйте использовать WebChromeClient вместо WebViewClient, чтобы показать и обновить прогресс:

шоу pregress бар перед вызовом webview.loadUrl():

if (validateUrl(url)) { 
    webView.getSettings().setJavaScriptEnabled(true); 
    progress.setVisibility(View.VISIBLE); 
    webView.loadUrl(url); 
} 

ходе обновления в onProgressChanged:

webView.setWebChromeClient(new WebChromeClient() { 
    @Override 
    public void onProgressChanged(WebView view, int newProgress) { 
     super.onProgressChanged(view, newProgress); 
     if (newProgress == 100) { 
      progress.setVisibility(View.GONE); 
     } else { 
      progress.setProgress(newProgress); 
     } 
    } 
}); 
+0

Извините, но где я должен вставить код webView.setWebChromeClient? Поскольку у меня уже есть WebviewClient. –

Смежные вопросы