2012-12-02 19 views
6

मुझे अपने एंड्रॉइड एप्लिकेशन में एक कस्टम संवाद दिखाने की ज़रूरत है। मानक AlertDialog डिज़ाइन अस्वीकार्य है। एंड्रॉयड डॉक्स कहते हैं:एंड्रॉइड कस्टम संवाद पृष्ठभूमि

युक्ति: यदि आप एक कस्टम संवाद चाहते हैं, आप के बजाय बजाय संवाद एपीआई का उपयोग करने का एक संवाद के रूप में एक गतिविधि प्रदर्शित कर सकते हैं। बस एक गतिविधि बना सकते हैं और प्रकट तत्व में Theme.Holo.Dialog करने के लिए अपने विषय सेट:

यह है कि। गतिविधि अब पूर्णस्क्रीन की बजाय एक संवाद विंडो में प्रदर्शित होती है।

वादा किया गया वादा किया। मैंने किया, लेकिन पारदर्शिता काम नहीं करती है! पृष्ठभूमि हमेशा ग्रे है:

<activity 
    android:name=".MyDialogActivity" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.Holo.Dialog.NoActionBar" > 
</activity> 

यहाँ मेरी गतिविधि का एक जड़ है:

enter image description here

यहाँ प्रकट में एक की वर्णन है

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:background="#00000000" 
    android:layout_width="400dp" 
    android:layout_height="wrap_content" > 

    // Content ... // 

</RelativeLayout> 

मैं भी android:background="@null" कोशिश की - प्रभाव वही था यदि मैं android:background="#ff0000" का उपयोग करता हूं तो यह लाल है (जैसा होना चाहिए)। लेकिन मैं इसे पारदर्शी कैसे बना सकता हूं?

अद्यतन

मैं

<style name="MyThemeDialogCustom" parent="android:Theme.Holo.Dialog.NoActionBar" > 
    <item name="android:windowBackground">@color/transparent</item> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
</style> 

उत्तर

5

साथ समाप्त हो गया मेकअप विषय इस तरह

<style name="ThemeDialogCustom"> 
<item name="android:windowFrame">@null</item> 
<item name="android:windowIsFloating">true</item> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
<item name="android:windowBackground">@color/transparent</item> 
<item name="android:colorBackgroundCacheHint">@null</item> 
</style> 
+1

आप एक विचार के लिए बहुत बहुत धन्यवाद। आप "जैसा है" समाधान अपवाद फेंक दिया है, इसलिए मैंने अभी तक 'एंड्रॉइड: थीम.होलो.डियलॉग.एक्शनएक्शनबार' से अपना विषय विरासत में लिया है। मैंने समाधान दिखाने के लिए अपना प्रश्न अपडेट किया। – Nick

3

का प्रयास करें ...

आप इस तरह धूसर पृष्ठभूमि से बच सकते हैं, यहां मुझे पारदर्शी पृष्ठभूमि मिली।

........ 
    Dialog dialog = new Dialog(MainActivity.this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    Window window = dialog.getWindow(); 
    window.setBackgroundDrawableResource(android.R.color.transparent); 
    dialog.setContentView(R.layout.popup_layout); 
    Button dialogBtn= (Button) dialog.findViewById(R.id.btn); 

    dialogBtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //task 
     } 
    }); 
    dialog.show(); 
    ....... 
2
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
+0

मुझे यह जवाब पसंद है। क्या इस धुंध को रद्द करने के लिए एक संवाद विषय विशेषता की तरह कुछ है? –

संबंधित मुद्दे