2011-06-29 11 views
10

mam okno niestandardowy z następującym stylu:Android: uczynić wszystko wokół Dialog ciemniejszy niż domyślnie

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

To pokazuje okno bez obramowania, a wszystko za gets (nieznacznie) ciemniejsze. Mój projektant chce, aby wszystko w tyle stało się jeszcze ciemniejsze niż domyślne ustawienia Androida, ale nie całkowicie czarne.

Czy jest w ogóle jakieś ustawienie?

Jedynym sposobem obejścia tego problemu jest użycie pełnoekranowego działania zamiast okna dialogowego i wypełnienie całego ekranu półprzezroczystym kolorem (np. # 99000000), a następnie narysowanie na nim mojego okna dialogowego. Czy istnieje prostszy sposób?

Dzięki!

+0

Twoja droga brzmi dość łatwo. Myślę, że nadpisanie okna dialogowego i utworzenie niestandardowego wymagałoby więcej wysiłku. – Blundell

Odpowiedz

27

Wszystko, co musisz zrobić, to bawić z pola dimAmount w WindowManager.LayoutParams:

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

dzięki)) działa dobrze – iseeall

+0

niesamowite! działa jak urok .. dzięki za tonę! – Junaid

20

Jeśli niestandardowy motyw przezroczyste okno z tworzenia, trzeba dodać poniżej linii, jak również. i możesz kontrolować dim kwoty za pomocą kodu powyżej odpowiedzi.

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

Dla mnie to wygląda jak poniżej:

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

Chciałbym dodać, że myDialog.show() musi być najpierw wywołany. –

+3

Dla mnie działało to tylko po dodaniu: 'window.setAttributes (lp);' (Ta metoda uruchamia zdarzenie.) – Risadinha

0

spróbować zrobić to

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

gdzie dialog jest nazwą oknie dialogowym utworzony.

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); 
Powiązane problemy