2011-06-29 22 views
10

Şu stille özel bir iletişim kurabilirim:Android: Dialog'un çevresindeki her şeyi varsayılandan daha koyu hale getirin

<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> 

Kenarlıksız bir iletişim gösterir ve arkasındaki her şey (biraz) daha koyu olur. Tasarımcım arkasındaki her şeyin Android'in varsayılandan daha karanlık olmasını istiyor, ancak tamamen siyah değil.

Bunun için bir ayar var mı?

Düşünebildiğim tek çözüm, bir diyalog yerine tam ekran etkinlik kullanmak ve sadece tüm ekranı yarı saydam bir renkle doldurmak (ör. # 99000000) ve daha sonra iletişim kutusunun üzerine çizmektir. Daha kolay bir yolu var mı?

Teşekkürler!

+0

Yolunuz oldukça kolay geliyor. Ben iletişim geçersiz kılma ve özel bir tane oluşturmak için daha fazla çaba sarfeder düşünüyorum – Blundell

cevap

27

yapmanız gereken tek şey WindowManager.LayoutParams yılında dimAmount alanıyla etrafında oynamak. ve yukarıdaki yanıt kodunu kullanarak loş miktarı kontrol edebilirsiniz.

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

Benim için aşağıdaki gibidir:

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

teşekkürler)) güzel çalışıyor – iseeall

+0

harika! Bir çekicilik gibi çalışır .. teşekkürler ton! – Junaid

20

Eğer tema yarı saydam özel iletişim oluşturuyorsanız, siz de çizginin altına eklemek zorunda:

+0

İlk olarak myDialog.show() öğesinin çağrılması gerektiğini eklemek isterim. –

+3

Benim için sadece ekledikten sonra çalıştı: 'window.setAttributes (lp);' (Bu yöntem bir olayı tetikler.) – Risadinha

0

iletişim oluşturulan diyalog kutusunun adıdır bu

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

yapıyor deneyin.

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); 
İlgili konular