2011-06-29 20 views
10

tôi có một hộp thoại tùy chỉnh với phong cách sau:Android: làm cho mọi thứ xung quanh Dialog sẫm màu hơn so với mặc định

<style name="webtogo_app_style" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
</style> 

Nó cho thấy một hộp thoại không biên giới, và bất cứ điều gì đằng sau được (hơi) tối hơn. Nhà thiết kế của tôi muốn mọi thứ phía sau tối hơn so với mặc định của Android, nhưng không hoàn toàn đen.

Có cài đặt nào cho điều này không?

Cách giải quyết duy nhất tôi có thể nghĩ là sử dụng hoạt động toàn màn hình thay vì hộp thoại và chỉ cần điền toàn bộ màn hình với màu bán trong suốt (ví dụ: # 99000000) và sau đó vẽ hộp thoại của tôi trên đó. Có cách nào dễ hơn không?

Cảm ơn!

+0

Cách của bạn có vẻ khá dễ dàng. Tôi nghĩ rằng hộp thoại ghi đè và tạo một hộp thoại tùy chỉnh sẽ tốn nhiều công sức hơn – Blundell

Trả lời

27

Tất cả bạn cần làm là chơi xung quanh với các lĩnh vực dimAmount trong WindowManager.LayoutParams:

WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes(); 
lp.dimAmount = 0.7f 
+0

cảm ơn)) hoạt động tốt đẹp – iseeall

+0

tuyệt vời! hoạt động như một nét duyên dáng .. cảm ơn một tấn! – Junaid

20

Nếu bạn đang tạo hộp thoại tùy chỉnh với chủ đề mờ, bạn phải thêm dòng dưới đây là tốt. và bạn có thể kiểm soát số tiền mờ bằng cách sử dụng mã của câu trả lời ở trên.

myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 

Đối với tôi nó trông giống như dưới đây:

WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes(); 
lp.dimAmount = 0.7f 
myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
+0

Tôi muốn thêm rằng myDialog.show() phải được gọi đầu tiên. –

+3

Đối với tôi, nó chỉ hoạt động sau khi thêm: 'window.setAttributes (lp); ' (Phương thức đó kích hoạt một sự kiện.) – Risadinha

0

cố gắng làm điều này

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

nơi thoại là tên của hộp thoại tạo ra.

1
WindowManager.LayoutParams lp=getWindow().getAttributes(); 
//set transparency of background 
lp.dimAmount=0.6f; // dimAmount between 0.0f and 1.0f, 1.0f is completely dark 
//lp.width = 200; 
//lp.height = 300; 
myDialog.getWindow().setAttributes(lp); 
myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
Các vấn đề liên quan