2012-03-31 21 views
5

Quiero tener un ProgressDialog con barra de progreso determinada en lugar de spinner predeterminado. Parece ser fácil: ProgressDialog tiene el método setIndeterminate, y el método show acepta un valor booleano para indicar indeterminación. ¡Pero de esta manera no funcionan para mí! El diálogo sigue siendo indeterminado con un spinner. ¿Cómo cambiar el comportamiento?ProgressDialog Determinado en Android

Respuesta

9

Usted necesita llamar:

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 

Mira la guía oficial dev Showing a progress bar con el código fuente del ejemplo adjunto a esa sección.

+1

El ejemplo en este enlace realmente ayudó, gracias) – aplavin

-2
ProgressDialog dialog = new ProgressDialog(this); 
dialog.setMessage("Registering. Please wait..."); 
dialog.setIndeterminate(true); 
dialog.setCancelable(false); 
dialog.show(); 

Try this code should work fine... 
+1

Creo que me malentendió: necesito determinada barra de progreso, que muestra cuánto del proceso se completa. – aplavin

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. 
+0

si el código anterior fue útil para usted .... – Ishu

+0

Este código usa ProgressBar, no ProgressDialog. Espero que sea posible lograr ese comportamiento con ProgressDialog, y solo si no lo es, hará lo que sugirió. – aplavin

+0

Sí, usa ProgressBar, pero esa vista se muestra como un cuadro de diálogo, por lo que no debe haber problemas, y el código de trabajo en mi aplicación actual funciona igual. – Ishu

Cuestiones relacionadas