2011-06-29 10 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> 

यह एक सीमा रहित संवाद दिखाता है, और पीछे कुछ भी (थोड़ा) गहरा हो जाता है। मेरा डिजाइनर चाहता है कि सबकुछ पीछे एंड्रॉइड के डिफ़ॉल्ट से अधिक अंधेरा हो, लेकिन पूरी तरह से काला नहीं।

क्या इसके लिए कोई सेटिंग है?

एकमात्र कामकाज मैं सोच सकता हूं कि एक संवाद के बजाय एक पूर्ण-स्क्रीन गतिविधि का उपयोग करना है और पूरी स्क्रीन को सेमिट्रांस्पेरेंट रंग (उदा। # 99000000) से भरें और उसके बाद मेरा संवाद खींचें। क्या कोई आसान तरीका है?

धन्यवाद!

+0

आपका तरीका बहुत आसान लगता है। मुझे लगता है कि ओवरराइडिंग डायलॉग और एक कस्टम बनाने वाला अधिक प्रयास करेगा – Blundell

उत्तर

27

तुम सब करने की ज़रूरत है WindowManager.LayoutParams में dimAmount क्षेत्र के साथ चारों ओर खेलने है। और आप उपरोक्त उत्तर के कोड का उपयोग कर मंद राशि को नियंत्रित कर सकते हैं।

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