2012-03-31 10 views
5

Tôi muốn có ProgressDialog với thanh tiến trình xác định thay vì spinner mặc định. Dường như dễ dàng: ProgressDialog có phương thức setIndeterminate và phương pháp show chấp nhận boolean để biểu thị tính không xác định. Nhưng cách này không hiệu quả với tôi! Hộp thoại vẫn không xác định với một spinner. Làm thế nào để thay đổi hành vi?Xác định tiến trìnhDialog trong Android

Trả lời

9

Bạn cần gọi:

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 

Kiểm tra các dev hướng dẫn chính thức Showing a progress bar với mã nguồn ví dụ gắn liền với phần đó.

+1

Ví dụ tại liên kết này thực sự hữu ích, cảm ơn) – 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

Tôi nghĩ bạn đã hiểu nhầm tôi: Tôi cần thanh tiến trình xác định, cho biết quá trình hoàn tất. – 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

liệu mã trên có hữu ích đối với bạn không .... – Ishu

+0

Mã này sử dụng ProgressBar, không phải ProgressDialog. Tôi hy vọng nó có thể đạt được hành vi như vậy với ProgressDialog, và chỉ nếu nó không phải là, sẽ làm theo cách bạn đề nghị. – aplavin

+0

Có nó sử dụng ProgressBar, nhưng xem đó được hiển thị như là hộp thoại để họ không phải là không có vấn đề và cùng là mã làm việc trong ứng dụng hiện tại của tôi im làm việc. – Ishu