2014-12-06 7 views
8

मैं कोनों के साथ एक संवाद खंड बनाना चाहता हूं। समस्या मैंसंवादफ्रेम में एंड्रॉइड राउंड कोने लेआउट

enter image description here

है जैसा कि आप देख, अगर ऊपर में एक TextView, वहाँ यह के कुछ भागों संवाद है, जो बुरा है की पारदर्शी हिस्सा खत्म हो गया है कि हो जाएगा। यह सूचीदृश्य से उस स्क्रॉलिंग बार के साथ भी होता है। मैं उन हिस्सों को "कट" करना चाहता हूं..और उन्हें दूसरी तस्वीर में मुखौटा करना है। क्या यह संभव है?

आकार

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="#FFF" /> 
    <corners android:topLeftRadius="20dp" android:topRightRadius="20dp" 
     android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp"/> 
    <stroke android:color="#7F7F7F" android:width="1dp" /> 
</shape> 

मैं टुकड़ा के लिए एक रेखीय लेआउट का उपयोग कर रहा हूँ, इसके बाद के संस्करण की पृष्ठभूमि के साथ। मैं फोन

getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

पृष्ठभूमि रंग & शीर्षक पट्टी से छुटकारा पाने के।

+0

आप नए कार्डव्यू को आजमा सकते हैं, इसमें गोल कोनों और ऊंचाई संपत्ति है, अच्छा लग रहा है –

+0

मैं डायलॉगफ्रैगमेंट का उपयोग करना चाहता हूं .. कार्ड व्यू एक दृश्य है..मैं फेसबुक टिप्पणी संवाद जैसे कुछ हासिल करना चाहता हूं (मुझे पता है कि यह एक है पॉपअप विंडो, लेकिन मैं खंड संवाद के साथ एक समान काम करना चाहता हूँ) –

उत्तर

3

सरल (गैर कतरन) जिस तरह से

सबसे आसान तरीका है बस अपने लेआउट के लिए गद्दी जोड़ने के लिए किया जाएगा। फिर आपका पाठ गोलाकार कोनों से ओवरलैप नहीं होगा।

विकल्प 1::

आप गद्दी बिना कोने गोल किया जाना चाहिए है, वहाँ कुछ अन्य विकल्प है कि मैं के बारे में पता कर रहे हैं क्लिप दृश्य (एपीआई 21+)

clipping views के लिए समर्थन को जोड़ा गया है

  • अपने लेआउट पृष्ठभूमि के रूप में अपने गोल आकार drawable सेट करें: View वर्ग एपीआई 21 में आप पहले API स्तरों की जरूरत नहीं है, यह इस में निर्मित क्लिप सुविधा का उपयोग करने वास्तव में आसान है।
  • प्रलेखन के अनुसार, आप तो बस अपने लेआउट एक्सएमएल में क्लिप विशेषता android:clipToOutline="true"

लिए दुर्भाग्य से निर्धारित करते हैं, वहाँ a bug है और यह विशेषता काम करने के लिए प्रतीत नहीं होता।सौभाग्य से, हम जावा में कतरन सेट कर सकते हैं:

  • अपनी गतिविधि या टुकड़ा में, बस कार्य करें: View.setClipToOutline(true)

मैं इसे परीक्षण किया है, और यह काम करता है:

View Clipping ON View Clipping OFF

विकल्प 2: नौ-पैच फ्रेम मास्क

आप उपकरणों < एपीआई 21 पर गोल कतरन समर्थन करने के लिए की जरूरत है, तो आप इस सामान्य दृष्टिकोण का उपयोग कर सकते हैं:

  • एक FrameLayout या RelativeLayout का उपयोग करना, एक गोल कोने nine-patch को "फ्रेम" अपनी सामग्री के बाकी बनाने ।
  • यह नौ-पैच छवि पारदर्शी (अल्फा 0%) होनी चाहिए, कोनों को छोड़कर, जो अपारदर्शी (अल्फा 100%) होना चाहिए।
  • नौ-पैच को दृश्य की पृष्ठभूमि के रूप में सेट करें, और उस लेआउट में अंतिम बच्चे के रूप में देखें (यह अन्य दृश्यों के शीर्ष पर ढेर बनाता है)।
  • पाठ तब पारदर्शी नौ-पैच के माध्यम से प्रदर्शित होगा, लेकिन कोनों पर मुखौटा किया जाएगा।

यदि आप इस दृष्टिकोण का उपयोग करते हैं, तो बस अपने नौ-पैच कोनों को अपनी पृष्ठभूमि के रंग से मेल करें।

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