2011-12-16 12 views
7

मेरे ऐप में मेरे पास जीमेल ऐप यूआई में लेबल के समान दिखने जैसा कुछ है। उन लोगों के लिए जो वे नहीं जानते हैं, वे इस तरह दिखते हैं (लेबल इन रंगीन सलाखों हैं): Gmail screenshotअतिरिक्त, लंबवत पैडिंग

इसी तरह के प्रभाव को प्राप्त करने के लिए मैं नौ-पैच ड्रॉबल्स का उपयोग करता हूं - प्रत्येक लेबल के लिए मैं एक टेक्स्ट व्यू बना रहा हूं और इसे आकर्षित करने योग्य हूं । यह आसान समाधान है, लेकिन मुझे यह पसंद नहीं है। यह सुरुचिपूर्ण नहीं है, प्रोफाइलर द्वारा दिखाया गया यह काफी धीमा है, और मुझे नहीं लगता कि यह करने का सही तरीका है।

मैंने इसे "आईसीएस-वाई" बनाने के लिए यूआई के डिजाइन को बदल दिया, इसलिए मैंने लेबल से गोलाकार कोनों को हटा दिया। और मैंने सोचना शुरू किया कि मैं 9-पैच समाधान कैसे बदल सकता हूं। BackgroundColorSpan का उपयोग करना सबसे स्पष्ट बात है। लेकिन इसमें एक, छोटी कमी है। मैं चाहता हूं कि मेरे लेबल में कुछ पैडिंग हो। Drawables के साथ, यह हासिल करना आसान था। स्पैन के साथ, यह कठिन है। क्षैतिज पैडिंग बनाने के लिए, मैं बस शुरुआत में और स्ट्रिंग के अंत में रिक्त स्थान जोड़ सकता हूं। लेकिन वर्टिकल पैडिंग को बड़ा कैसे बनाया जाए? चीजों को स्पष्ट करने के लिए, इस BackgroundColorSpan साथ लेबल का एक स्क्रीनशॉट है:

enter image description here

मैं रंग भागों के ऊपर और पाठ के नीचे बड़ा बनाना चाहते हैं। मुझे लगता है कि मुझे किसी प्रकार का मेट्रिकएफ्फेक्टिंगस्पैन का उपयोग करना चाहिए, लेकिन मुझे यह पता नहीं लगा सका। या शायद मुझे अपना खुद लिखना चाहिए? या, आखिरकार, शायद मेरी जरूरतों को पूरा करने में सक्षम नहीं हैं और मुझे छवियों के साथ रहना चाहिए या कैनवास बनाना चाहिए और जीमेल ऐप में सबकुछ "मैन्युअल रूप से" खींचना चाहिए?

उत्तर

2

ऐसा करने का सबसे आसान तरीका है, और मुझे यकीन है कि जीमेल ऐप इसका उपयोग कर रहा है, आकार हैं।

बस एक कस्टम shape बनाएं, अपने मामले में गोलाकार कोनों और ठोस रंग के साथ एक आयताकार आकार, और अपने टेक्स्टव्यू की पृष्ठभूमि संपत्ति के लिए यह ड्रायबल असाइन करें।

एक आकार xml में परिभाषित किया गया है। इस प्रकार आप इसे प्रदान करेंगे:

<TextView 
    ... 
    android:background="@drawable/my_awesome_shape" /> 
+0

+1 आकार के लिए, आप भी ड्रॉप छाया, आदि आकार के संयोजन से जोड़ने जैसे कुछ उन्नत कर सकते हैं। – Guillaume

+0

धन्यवाद! यह निश्चित रूप से छवियों पर एक सुधार है। लेकिन स्पैन मुझे एक टेक्स्ट व्यू-आकार में दो या दो से अधिक लेबल प्रदर्शित करने की अनुमति देगा, अगर मैं गलत हूं तो मुझे सही करें, मुझे इसे आसानी से करने की अनुमति न दें? – user1234567

+0

यह सही है, क्योंकि आप आकृतियों को बिल्कुल ड्रॉबल्स के रूप में उपयोग कर सकते हैं - क्योंकि वे ड्रॉबल्स से अधिक कुछ नहीं हैं। – poitroae

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