Determinate ProgressDialog in Android
Asked Answered
C

3

6

I want to have a ProgressDialog with determinate progress bar instead of default spinner. It seems to be easy: ProgressDialog has method setIndeterminate, and method show accepts a boolean to indicate indeterminateness. But these way don't work for me! The dialog is still indeterminate with a spinner. How to change the behaviour?

Chalfant answered 31/3, 2012 at 13:26 Comment(0)
S
10

You need call:

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

Check out the official dev guide Showing a progress bar with the example source code attached to that section.

Spelldown answered 31/3, 2012 at 22:11 Comment(0)
C
0
Oh Sorry.. Try this

1) Create a layout file with below 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="wrap_content" android:id="@+id/RelativeLayout_DownloadProgress" android:paddingLeft="20dp" android:paddingBottom="20dp" android:paddingRight="10dp" android:paddingTop="20dp">
    <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/downloading_video_tv" android:text="@string/downloading_video" android:textStyle="bold" android:textColor="@color/COLOR_WHITE"></TextView>
    <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/download_progress_tv" android:text="@string/zero_percent" android:layout_below="@+id/downloading_video_tv" android:textColor="@color/COLOR_WHITE"></TextView>

    <Button
        android:id="@+id/download_cancel_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/downloading_video_tv"
        android:text="@string/Cancel"
        android:textColor="@color/COLOR_CANCEL_BTN" android:layout_marginLeft="5dp">
</Button>

   <ProgressBar
       android:id="@+id/download_progressbar"
       style="?android:attr/progressBarStyleHorizontal"
       android:layout_width="fill_parent"
       android:layout_height="13dp"
       android:layout_below="@id/download_progress_tv"
       android:layout_toLeftOf="@id/download_cancel_btn"
       android:indeterminateOnly="false"
       android:max="100"
       android:progressDrawable="@drawable/dwnld_progress" >

</ProgressBar>


</RelativeLayout>



2) In your code do the following

    i) in oncreate() method add the following lines..
      //Download progress layout inflate
       RelativeLayout relativelayout_DownloadProgress = (RelativeLayout)_inflater.inflate(R.layout.downloadprogress, null);
       TextView downloadProgress_PercentageTV = (TextView)relativelayout_DownloadProgress.findViewById(R.id.download_progress_tv);
       Button downloadProgress_CancelBtn = (Button)relativelayout_DownloadProgress.findViewById(R.id.download_cancel_btn);
      ProgressBar  download_progressBar = (ProgressBar)relativelayout_DownloadProgress.findViewById(R.id.download_progressbar);
        downloadProgress_CancelBtn.setOnClickListener(new OnClickListener() {        
            public void onClick(View v) {
                // TODO Auto-generated method stub  

                dismissDialog(0);
            }
        });
    ii)  //Creating Dialogs i.e., below onCreate() method
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case 0:
            return new AlertDialog.Builder(_activity)
            .setView(relativelayout_DownloadProgress)
            .create();
        }//switch end
        return null;
    }//onCreateDialog()

   iii) on any click event add the following lines. 
     showDialog(0);download_progressBar.setProgress(0);


Sorry i know its too long code but its working code in application...Try it might need modifications like variables must be declared in class scope.
Cockade answered 31/3, 2012 at 14:17 Comment(2)
This code uses ProgressBar, not ProgressDialog. I hope it's possible to achieve such behavior with ProgressDialog, and only if it isn't, will do the way you suggested.Chalfant
Yes it uses ProgressBar, But that view is shown as dialog so so their must be no problems and the same is working code in my current application that im working.Cockade
C
-3
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Registering. Please wait...");
dialog.setIndeterminate(true); 
dialog.setCancelable(false); 
dialog.show(); 

Try this code should work fine...
Cockade answered 31/3, 2012 at 13:33 Comment(1)
I think you misunderstood me: I need determinate progressbar, which shows how much of the process is completed.Chalfant

© 2022 - 2024 — McMap. All rights reserved.