2015-02-15 25 views
15
alertDialog = new ProgressDialog(this);       
alertDialog.setMessage(getResources().getString(R.string.loader)); 
alertDialog.setCancelable(false); 
alertDialog.show(); 

Đơn giản khi tôi làm điều này, vòng tròn màu xanh lá cây sẽ hiển thị với tải từ bên cạnh nó. Tuy nhiên khi tôi không sử dụng hộp thoại tiến bộ, và tôi sử dụng một progressbar trên trang tôi nhận được một màu hồng như tôi đã xác định dưới đây trong styles.xml tôiMaterial Design progressdialog

<item name="colorPrimary">@color/pink</item> 
<item name="colorPrimaryDark">@color/pink</item> 
<item name="colorAccent">@color/pink</item> 

giải pháp nhận được vòng tròn màu hồng như là gì trong thanh tiến trình trên trang?

Trả lời

11

Đối với API 21+, bạn có thể xác định kiểu sau để tô màu hộp thoại tiến trình tài liệu. Lưu ý rằng điều này phải dưới values-v21 nếu bạn hỗ trợ các nền tảng thấp hơn.

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:alertDialogTheme">@style/MyAlertDialog</item> 
</style> 

<style name="MyAlertDialog" parent="android:Theme.Material.Light.Dialog.Alert"> 
    <item name="android:colorAccent">@color/pink</item> 
</style> 

<item name="colorAccent"> là dành cho AppCompat trong khi <item name="android:colorAccent"> dành cho API 21+. Hộp thoại tiến trình nguyên liệu không hoạt động với AppCompat, ngay cả với v22.1 Hỗ trợ lib mới AppCompatDialog.

Bạn có thể thấy câu trả lời của Chris Banes here nói rằng anh sẽ không quay lại Hộp thoại tiến trình vì chúng là "mẫu xấu".

+0

Nhận xét hợp lý rằng tiến trình Hộp thoại là "mẫu xấu". Whats đề nghị thay thế? – Zapnologica

+5

@Zapnologica theo hướng dẫn của nhà phát triển: [_ "Tuy nhiên, nếu bạn cần chỉ ra quá trình tải hoặc không xác định, thay vào đó bạn nên làm theo hướng dẫn thiết kế cho Tiến trình & Hoạt động và sử dụng ProgressBar trong bố cục của bạn." _] (Http://developer.android.com/guide/topics/ui/dialogs.html) thay vì 'ProgressDialog'. Vì vậy, về cơ bản nhúng một 'ProgressBar' một nơi nào đó và ẩn/bỏ ẩn nó khi cần thiết. Tôi đồng ý ProgressDialog có xu hướng là một mô hình xấu (đặc biệt nếu không thể hủy), nhưng tôi ước họ sẽ trả trước và rõ ràng hơn ở mọi nơi. Thậm chí có thể đề cập đến nó trong tài liệu ProgressDialog. –

+3

Liên kết tới nhận xét về bài đăng của Chris Banes giờ đây dường như đã chết. – stkent

2

Câu hỏi này là một chút cũ, nhưng nếu bạn đang sử dụng AppCompat, chỉ cần thêm thuộc tính này:

<item name="android:tint">@color/my_color_accent</item> 

Trong phong cách của bạn

<style name="MaterialDialog" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="android:tint">@color/my_color_accent</item> 
</style> 

Hope this helps!

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