2010-08-23 40 views
66

Ứng dụng của tôi cần tạo một tiến trình nhỏBằng chương trình. ProgressBar không có phương pháp để đặt kiểu (Tôi muốn một thanh tiến trình nhỏ). Các nhà xây dựng có thể mất một AttributeSet, tuy nhiên nó là một giao diện và yêu cầu tôi thực hiện một tập hợp các chức năng. Có cách nào để đặt kiểu progressBar nhỏ không? (Tôi không thể sử dụng xml để tạo ProgressBar)Cách tạo ProgressBar theo chương trình?

Trả lời

159

Hầu hết thời gian nếu bạn cung cấp AttributeSet theo cách thủ công, bạn phải sử dụng một trong các Android. May thay, họ đã tiếp xúc với bộ thuộc tính mô tả một thanh tiến trình nhỏ. Sử dụng mã này:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall); 
+0

Điều này làm cho thanh tiến trình trông yelowish và cũ thay vì màu xanh nhạt (mới). –

+6

@kilaka chỉ để tham khảo trong tương lai, hãy thay đổi android.R.attr.progressBarStyleSmall thành android.R.attr.progressBarStyleHorizontal cho phiên bản mới mẻ :) – ElaGorilaki

+1

@BabyGorilla Và tiến trìnhBarStyleHorizontal có hoạt động trên tất cả phiên bản Android không ?! –

9

Tạo một file xml bố trí trong res/thư mục bố trí với thanh tiến trình mong muốn containig tất cả các thuộc tính bạn cần:

<?xml version="1.0" encoding="utf-8"?> 
<ProgressBar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" ... /> 

Tiếp theo trong lớp Hoạt động bạn có thể tạo đối tượng ProgressBar từ bố cục đó:

LayoutInflater inflater = getLayoutInflater(); 
    ProgressBar bar = (ProgressBar) inflater.inflate(R.layout.small_progress_bar, null); 

nơi R.layout.small_progress_bar liên kết đến tệp xml bố cục của bạn.

Bạn vẫn không thể sử dụng tệp xml?

+123

anh ta nói theo lập trình. –

+0

Thay vì tăng cấp độ theo cách thủ công, bạn có thể đặtXem nội dung của bạn thành thanh tiến trình này và thay đổi bố cục khi dữ liệu của bạn được mã hóa. – amalBit

-3

Full mã cho thêm thanh tiến trình

private ProgressDialog mProgressDialog; 
    mProgressDialog = new ProgressDialog(this); 
    mProgressDialog.setMessage("Signing........"); 
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    mProgressDialog.setCancelable(false); 

Gọi dưới phương pháp để hiển thị thanh

mProgressDialog.show(); 

cuộc gọi dưới đây để ẩn thanh

mProgressDialog.dismiss(); 
+1

Trong khi tương tự, đây là một ProgressDialog, không phải là ProgressBar. OP có thể không muốn hộp thoại cho chỉ báo tiến trình của anh ấy. – Parker

+0

ProgressDialog này hiện không được chấp nhận trong Android 26 –

Các vấn đề liên quan