2011-06-29 26 views
10

よりダイアログの周りのすべてが暗く、私は次のようなスタイルを持つカスタムダイアログを持っています。アンドロイド:デフォルト

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

それはボーダレスダイアログを示しており、何が背後に(わずかに)暗くなります。私のデザイナーは、Androidのデフォルトよりも暗くなってきたことをすべて後ろから望んでいますが、完全に黒ではありません。

これについての設定はありますか?

私が考えることができる唯一の回避策は、ダイアログの代わりにフルスクリーンのアクティビティを使用し、画面全体を半透明の色(#99000000など)で塗りつぶしてからダイアログを描画することです。簡単な方法がありますか?

ありがとうございます!

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

あなたの方法はとても簡単です。私はダイアログをオーバーライドし、カスタムを作成するとより多くの努力が必要だと思う。 – Blundell

答えて

27

あなたがする必要があるのはWindowManager.LayoutParamsdimAmountフィールドで遊んでいます。 と上記の答えのコードを使用して額を制御することができます。私にとって

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

それは以下のようになります。

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

ありがとう))うまく動作します。 – iseeall

+0

素晴らしい!魅力のように働く..おかげで! – Junaid

20

あなたがテーマ半透明でカスタムダイアログを作成している場合、あなたにも線の下に追加する必要があります。

+0

myDialog.show()を最初に呼び出す必要があることを追加したいと思います。 –

+3

私にとっては、 'window.setAttributes(lp);' (そのメソッドはイベントを発生させます。 – Risadinha

0

ダイアログが作成されたダイアログボックスの名前です。この

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

をやってみてください。

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); 
関連する問題