2009-12-10 19 views
27

मैंने अलर्टडिअलॉग.बिल्डर का उपयोग करके अलर्टडियलॉग बनाया है, लेकिन संवाद सीमा स्क्रीन पर बहुत अधिक जगह लेती है। मैं सीमा को कैसे हटा सकता हूं? मैंने एक पारदर्शी पृष्ठभूमि के साथ संवाद अनुकरण करने के लिए एक और गतिविधि का उपयोग करने का प्रयास किया है, लेकिन संवाद बार-बार उपयोग किया जाता है, और हर बार एक नई गतिविधि बनाने के लिए महत्वपूर्ण मात्रा में अंतराल प्रस्तुत किया जाता है।एंड्रॉइड बॉर्डरलेस डायलॉग

here का उत्तर उल्लेख करता है कि यह एपिडेमोस में पाया जा सकता है, लेकिन मुझे यह प्रतीत नहीं होता है।

उत्तर

63

ठीक है, मैं अपने स्वयं के प्रश्न का उत्तर दूंगा। असल में, AlertDialog.builder का उपयोग करने के बजाय, इसके कन्स्ट्रक्टर का उपयोग करके नियमित संवाद बनाएं, और डिफ़ॉल्ट संवाद थीम के बजाय उपयुक्त थीम का उपयोग करें।

Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar); 

आशा इस किसी और में मदद करता है:

तो अपने कोड कुछ इस तरह दिखेगा।

+4

यदि हम ऐसा करते हैं तो dialog.setCanceledOnTouchOutside (सत्य); का कोई प्रभाव नहीं होगा ... फिर इसे कैसे संभालें? – amithgc

+0

यही वही है जो मैं ढूंढ रहा था। मैं संवाद निर्माण प्रणाली और घंटों के लिए बुरी तरह लिखित ट्यूटोरियल के दर्जनों के साथ कुश्ती कर रहा हूं, और कोड की आपकी एक पंक्ति मुझे बस चाहिए। धन्यवाद! – kodi

+3

लेकिन यह संवाद पूर्णस्क्रीन बना देता है .. इसे पूर्णस्क्रीन में नहीं होने के कारण इसे उपरोक्त कोड – AndroidDev

24

android.R.style.Theme_Translucent_NoTitleBar का उपयोग करना यदि आप संवाद पूर्ण स्क्रीन होना चाहते हैं तो काम करता है। एक विकल्प है अपनी खुद की शैली बनाना, जैसे:

<style 
    name="Theme_Dialog_Translucent" 
    parent="android:Theme.Dialog"> 
    <item 
     name="android:windowBackground">@null</item> 
</style> 
+0

+1 यह काम कर रहा है। धन्यवाद जोनासब। –

1

आप बिल्डर को उलटा पृष्ठभूमि लागू करने के लिए कह सकते हैं। एक पीएनजी स्रोत के साथ एक सीमा रहित स्प्लैश स्क्रीन प्रदर्शित करने के लिए मेरे लिए काम किया।

2

मैं drawable के लिए एक पारदर्शी पिक्सेल जोड़ा गया है और निम्न कोड का प्रयोग किया:

dialog.getWindow().setBackgroundDrawableResource(R.drawable.transpix); 
33

यहाँ मेरी समाधान है, तो एक संवाद है कि केवल अपनी सामग्री से पता चलता पाने के लिए।

Dialog dialog = new Dialog(this,R.style.ThemeDialogCustom); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    //you can move the dialog, so that is not centered 
    // dialog.getWindow().getAttributes().y = 50; //50 should be based on density 

    dialog.setContentView(yourLinearLayout); 
    dialog.setCancelable(true); 
    //dialog.setOnCancelListener(cancelListener); 
    dialog.show(); 

themes.xml // प्रोजेक्ट/रेस में स्थित/महत्व देता

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <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_color</item> 
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
    </style> 
</resources> 

colors.xml // भी वहाँ स्थित

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
     <color name="transparent_color">#00000000</color> 
</resource> 
+4

यह एक अच्छा समाधान है। यह आपको बस एक ही संवाद देकर पूरी तरह से समस्या हल करता है, लेकिन सीमा के बिना !!! यह स्वीकार किए गए एक से अधिक उचित समाधान है। –

+0

सही समाधान के लिए धन्यवाद। और आप भी संवाद जोड़ सकते हैं .setCanceledOnTouchOutside (सत्य); आउट साइड डायलॉग टच पर संवाद को खारिज करने के लिए। –

7

इस कोशिश: डी

Dialog popUpView= new Dialog(this); 
popUpView.getWindow().setBackgroundDrawable(new ColorDrawable(0)); 
2

यदि आपके पास 2 सीमा है तो आपको ContextThemeWrapp का उपयोग करने की आवश्यकता है er, जो आपको केवल एक सीमा दिखाएगा जैसा कि आप चाहेंगे :)

ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo); 
final LayoutInflater inflater = (LayoutInflater) wrapper.getSystemService(LAYOUT_INFLATER_SERVICE); 
AlertDialog.Builder builder = new AlertDialog.Builder(wrapper); 
0

आपकी संसाधन फ़ाइल में उदाहरण के लिए नाम की गई एक XML फ़ाइल बनाएं null_image.xml, निम्नलिखित सामग्री के साथ:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 

<solid android:color="#0000" /> 

<size 
    android:height="1dp" 
    android:width="1dp" /> 

</shape> 

अपने जावा कोड में, संवाद खिड़की को लाने और drawable संसाधन के रूप में xml फ़ाइल निर्धारित करते हैं, इस तरह: अपने संदर्भ पर निर्भर:

Dialog dialog = new Dialog(getContext()); 
Window window = dialog.getWindow(); 
window.setBackgroundDrawableResource(R.drawable.null_image); 

यह है, आनंद लें।

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