2011-06-28 4 views
13

को देखते हुए मैं इस तरह TextViews के लिए bulletpoints बनाने के लिए एक पृष्ठभूमि drawable है:<size> परत-सूची का उपयोग करते समय विशेषता उपयोगी नहीं है?

Example of what I want

तब मेरे XML कोड इस तरह दिखता है:

<?xml version="1.0" encoding="utf-8"?> 

<layer-list 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:right="235dp"> 
     <shape android:shape="oval"> 
      <padding android:left="10dp" /> 
      <size android:height="5dp" android:width="5dp"/> 
      <solid android:color="@color/my_pink"/> 
     </shape> 
    </item> 
    <item android:left="10dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#ffffff"/> 
      <padding android:left="10dp" /> 
     </shape> 
    </item> 
</layer-list> 

लेकिन एक बार मैं कोड का उपयोग ऊपर दिखाए गए, मेरे बुलेट बिंदुओं इस तरह दिखेगा:

Result of the XML shown above

ऐसा लगता है कि <size> टैग पूरी तरह से अनदेखा किया जाता है।

आप इस समस्या को कैसे हल करेंगे? 9 पैच का उपयोग करके, हाँ मुझे पता है .. शायद यह करना सबसे आसान है .. लेकिन वास्तव में मैं एक एक्सएमएल समाधान खोजने की उम्मीद कर रहा था क्योंकि यह भविष्य में अधिक लचीला है।

कस्टम ड्राइंग भी प्रश्न से बाहर है।

+1

मेरा उत्तर http://stackoverflow.com/questions/26841517/layer-list-ignore-size-tag/ – offset

उत्तर

6

<size> टैग निश्चित रूप से layer-list में काम करता है और बुलेट बिंदुओं textviews के लिए आप XML विशेषता android:drawableLeft उपयोग कर सकते हैं दिखाने के लिए - इस दृष्टिकोण के साथ>link

, 9-पैच और कस्टम ड्राइंग की कोई जरूरत नहीं है।

कोड पोस्ट करने के लिए कोड & स्क्रीनशॉट पोस्टिंग।

रेस/drawable/bullet_point_layer.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:right="3dp"> 
    <shape android:shape="oval"> 
     <padding android:left="10dp" /> 
     <size android:height="10dp" android:width="10dp"/> 
     <solid android:color="#ff0080"/> 
    </shape> 
</item> 

रेस/लेआउट/main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView one" 
    android:textColor="@android:color/black" 
    android:drawableLeft="@drawable/bullet_point_layer" 
    android:background="@android:color/white" /> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView Two" 
    android:textColor="@android:color/black" 
    android:drawableLeft="@drawable/bullet_point_layer" 
    android:background="@android:color/white" /> 

</LinearLayout> 

यह कैसे लग रहा है

+0

निश्चित रूप से एक अच्छा समाधान है कि देखो। पहले drawableLeft के बारे में नहीं सोचा था। धन्यवाद! –

+0

@ विजय सी: टैग काम कर रहा है या परत सूची में नहीं है ?? आपने कहा " टैग निश्चित रूप से लेयर-लिस्ट में काम करता है", मुझे रेटिंग बुर्ज में भी समस्या है इस बुलेट प्वाइंट की तरह, स्टार लंबवत रूप से फैला हुआ है, क्या wrap_content पर ऊंचाई सेट करने का कोई तरीका है ?? – Jayesh

+0

@ जयेश क्या आपने ड्रॉइंग लेफ्ट का उपयोग किया है? –

5

यह एक पुरानी पोस्ट है, लेकिन मैंने सोचा कि मैं इस पोस्ट पर कुछ बहुत महत्वपूर्ण जोड़ दूंगा।

मेरे अनुभव से <layer-list> का अंतिम आइटम आइटम मूल्य जो लिया गया है वह होगा।

तो इस उदाहरण में मैं दो पंक्ति विभक्त रेखा बना देता हूं। मैं विभाजक खींचने योग्य ऊंचाई निर्दिष्ट करने के लिए अंत में एक खाली आइटम निर्दिष्ट करता हूं।

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="#535353" /> 
     </shape> 
    </item> 

    <item android:top="@dimen/common_divider_line_half_size"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#737373" /> 
     </shape> 
    </item> 

    <!-- Last item empty to specify divider height --> 
    <item> 
     <shape android:shape="rectangle"> 
      <size android:height="@dimen/common_divider_line_size"/> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 
</layer-list> 
+1

बहुत रोचक। –

+0

fitVY के लिए ImageView स्केल टाइप टाइप करें, इस तरह आपको आयाम सेट करने की आवश्यकता नहीं है। निम्नलिखित काम करेंगे: <परत सूची ...> <आइटम एंड्रॉइड: drawable = "@ रंग/some_color" /> <बिटमैप एंड्रॉइड: src = "..." एंड्रॉइड: गुरुत्वाकर्षण = "केंद्र"/> Johan

+0

नहीं। एंड्रॉइड 21 के नीचे, या तो आकार टैग या एंड्रॉइड: चौड़ाई/ऊंचाई विशेषताओं को सिस्टम द्वारा अनदेखा किया जाता है। – DYS

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

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