Display progressBar in popup

I have a popup dialog in which I load webview. I want to show progressBar while the webview is loading on top of the popup. I found a way to show loading progress while the web page is loading, but if this web view is loading in a popup dialog, the progressBar does not appear on top of it. Can someone explain the reason why this is happening.

Here is the code

[the code]

 @SuppressWarnings("static-access")
    public void showPopUp(String url){
            try{

                Dialog dialog = new Dialog(Links.this);
                LayoutInflater inflater = (LayoutInflater)getSystemService(Links.this.LAYOUT_INFLATER_SERVICE);
                View vi = inflater.inflate(R.layout.link_popup, null);
                dialog.setContentView(vi);
                dialog.setTitle("Title here");
                dialog.setCancelable(true);
                WebView wb = (WebView) vi.findViewById(R.id.WebView01);

                wb.setWebViewClient(new MyWebViewClient());
                wb.getSettings().setJavaScriptEnabled(true);   
                wb.getSettings().setSupportZoom(true);      
                wb.loadUrl(url);
//              final Activity MyActivity = this;  
//              
//              progressDialog = ProgressDialog.show(dialog.getOwnerActivity(), "", "Loading....", true);
//              
//              wb.setWebChromeClient(new WebChromeClient() {
//               public void onProgressChanged(WebView view, int progress)   
//               {
//                   MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded
//                   if(progress == 100){
//                    if(progressDialog.isShowing())
//                           progressDialog.dismiss();
//                   }
//                 }
//               }); 

                System.out.println("..loading url..");  
                dialog.show();

             }catch(Exception e){
                 System.out.println("Exception while showing Agreement : " + e.getMessage());
             }
        } 

[/the code]

It did not work, so I commented on this.

link_popup.xml

[the code]

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="fill"
android:id="@+id/layout_root"
android:background="#000000"
>

        <ProgressBar

            android:layout_width="fill_parent" 
            android:layout_height="5dip"
            android:layout_alignParentTop="true" 
            style="?android:attr/progressBarStyleHorizontal"
            android:id="@+id/progressbar_Horizontal"
            android:max="100"
            android:background="#228b22"
         />
        <WebView  
            android:id="@+id/WebView01"
            android:layout_below="@id/progressbar_Horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            android:scrollbars="@null"
          />
</RelativeLayout>

[/the code]

+5
source share
6 answers

I have not looked at your code, but if you look at xml, you have RelativeLayout, ProgessBar and WebView.

, RelativeLayout, Progessbar, , , WebView. - fill_parent , ProgressBar WebView...

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="fill"
    android:id="@+id/layout_root"
    android:background="#000000">

    <!-- First the WebView -->
    <WebView  
        android:id="@+id/WebView01"
        android:layout_below="@id/progressbar_Horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerVertical="true"
        android:layout_centerInParent="true"
        android:scrollbars="@null"
      />

      <!-- Than the Progessbar on top of it -->
      <ProgressBar
        android:layout_width="fill_parent" 
        android:layout_height="5dip"
        android:layout_alignParentTop="true" 
        style="?android:attr/progressBarStyleHorizontal"
        android:id="@+id/progressbar_Horizontal"
        android:max="100"
        android:background="#228b22"
     />
</RelativeLayout>
+2

, u ur , :

  android:theme="@android:style/Theme.Dialog"

u , async task ur,

,

0

, -, / -/-.

/**
 * @author Sherif
 * 
 * Copyright 2011
 *
 * Dialog that will enable web browsing with a progress dialog.
 *
 */

import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Display;
import android.view.ViewGroup;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

public class MyLovelyDialog extends Dialog {
    static final float[] DLANDSCAPE = {20, 60};
    static final float[] DPORTRAIt = {40, 60};
    static final FrameLayout.LayoutParams mFrameLayoutParams =
        new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
                         ViewGroup.LayoutParams.FILL_PARENT);
    private String mUrl;
    private ProgressDialog mProgressDialog;
    private WebView mWebView;
    private LinearLayout mLinearLayout;

    public MyLovelyDialog(Context context, String url) {
        super(context);
        mUrl = url;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setUpProgressDialog();
        setUpContent();
        setUpWebView();
        setUpDisplay();
    }
    private void setUpProgressDialog() {
        mProgressDialog = new ProgressDialog(getContext());
        mProgressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        mProgressDialog.setMessage("Loading...");
    }
    private void setUpContent() {
        mLinearLayout = new LinearLayout(getContext());
        mLinearLayout.setOrientation(LinearLayout.VERTICAL);
    }
    private void setUpDisplay() {
        Display display = getWindow().getWindowManager().getDefaultDisplay();
        final float scale =
            getContext().getResources().getDisplayMetrics().density;
        int orientation =
            getContext().getResources().getConfiguration().orientation;
        float[] dimensions =
            (orientation == Configuration.ORIENTATION_LANDSCAPE)
                    ? DLANDSCAPE : DPORTRAIt;
        addContentView(mLinearLayout, new LinearLayout.LayoutParams(
                display.getWidth() - ((int) (dimensions[0] * scale + 0.5f)),
                display.getHeight() - ((int) (dimensions[1] * scale + 0.5f))));
    }
    private void setUpWebView() {
        mWebView = new WebView(getContext());
        mWebView.setVerticalScrollBarEnabled(false);
        mWebView.setHorizontalScrollBarEnabled(false);
        mWebView.setWebViewClient(new MyLovelyDialog.MyLovelyWebViewClient());
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl(mUrl);
        mWebView.setLayoutParams(mFrameLayoutParams);
        mLinearLayout.addView(mWebView);
    }
    private class MyLovelyWebViewClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            mProgressDialog.show();
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            mProgressDialog.dismiss();
        }
    }
}
0

Relative Layout , xml, . xml -, -. MyWebViewClient onPageFinished, visibility . MyWebViewClient, .

:

    public class MyWebViewClient extends WebViewClient {

        private ProgressBar pBar;

        public MyWebViewClient(ProgressBar pBar)
        {
            super();
            this.pBar = pBar;
        }

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

    }
0

Java- :

//              progressDialog = ProgressDialog.show(dialog.getOwnerActivity(), "", "Loading....", true);
//              
//              wb.setWebChromeClient(new WebChromeClient() {
//               public void onProgressChanged(WebView view, int progress)   
//               {
//                   MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded
//                   if(progress == 100){
//                    if(progressDialog.isShowing())
//                           progressDialog.dismiss();
//                   }
//                 }
//               }); 

:

              progressDialog = (ProgressDialog) vi.findViewById(R.id.progressbar_horizontal);

              wb.setWebChromeClient(new WebChromeClient() {
               public void onProgressChanged(WebView view, int progress)   
               {
                   progressDialog.setProgress(progress * 100); //Make the bar disappear after URL is loaded
                   if(progress == 100){
                    if(progressDialog.isShowing())
                           progressDialog.setVisibility(View.GONE);
                   }
                 }
               });
0

All Articles