0

Androidスタジオのナビゲーション・ドロワー(テンプレート)を使用しました。チュートリアルのとおり、私は 'content_main' xmlのプログレスバーを簡単に見ることができます。ただし、アクティビティが開始するたびにプログレスバーは表示されません。私は、ConstraintLayoutの代わりにFrameLayoutを使用すること、Linear Layoutを使用してツールバーのProgress Barを使用することなど、多くのチュートリアルを試しました。私を助けてください。 'content_main'のコードを以下に示します。アプリケーションの使用中にプログレスバー(水平)を表示できません。 (ナビゲーション・ドロワー)

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="parts.tractor.versa.com.versatractorparts.MainActivity" 
tools:showIn="@layout/app_bar_main"> 

<ProgressBar 
    android:id="@+id/progressBar" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:layout_gravity="top" 
    android:progressDrawable="@drawable/bg_progress_bar_webview"/> 

<WebView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/webView"/> 

とJavaファイル以下の通りです:

webView = (WebView) findViewById(R.id.webView); 
    mProgressBar = (ProgressBar) findViewById(R.id.progressBar); 
    final Activity activity = this; 
    webView.setWebChromeClient(new WebChromeClient() 
    { 
     public void onProgressChanged(WebView view, int progress) { 
      // Activities and WebViews measure progress with different scales. 
      // The progress meter will automatically disappear when we reach 100% 
      activity.setProgress(progress * 100); 
     } 
    }); 

    webView.setWebViewClient(new WebViewClient(){ 

     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      mProgressBar.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      mProgressBar.setVisibility(View.GONE); 
     } 
    }); 

答えて

0

は、デフォルトのProgressBarをこの方法でURLを渡します。

private void startWebView(String url) { 

    WebSettings settings = webView.getSettings(); 

    settings.setJavaScriptEnabled(true); 
    webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 

    webView.getSettings().setBuiltInZoomControls(true); 
    webView.getSettings().setUseWideViewPort(true); 
    webView.getSettings().setLoadWithOverviewMode(true); 

    progressDialog = new ProgressDialog(ContestActivity.this); 
    progressDialog.setMessage("Loading..."); 
    progressDialog.show(); 

    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      if (progressDialog.isShowing()) { 
       progressDialog.dismiss(); 
      } 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      Toast.makeText(ContestActivity.this, "Error:" + description, Toast.LENGTH_SHORT).show(); 

     } 
    }); 
    webView.loadUrl(url); 
} 
+0

ありがとうございました。しかし、私が使用しているProgress Barを探していて、それがなぜ表示されないのかについての正確な理由を知りたいのです。 –

関連する問題