2012-06-19 15 views
29

मैं listview विभक्त के लिए मार्जिन सेट करने का प्रयास कर रहा हूं।
विभक्त एक चित्तीदार लाइन है:लिस्टव्यू डिवाइडर मार्जिन

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="line" > 
    <stroke 
     android:dashGap="1dp" 
     android:dashWidth="1.5dp" 
     android:width="1dp" 
     android:color="#FF404040" /> 

    <size android:height="3dp" /> 

</shape> 

और एक listview जहां मैं विभक्त

<ListView 
    android:id="@+id/lv_news_feed_list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/white" 
    android:divider="@drawable/ch_dashed_line_divider" 
    /> 

सेट लेकिन मैं एक विभक्त मार्जिन बाएँ और दाएँ चाहते हैं। मैंने आकार में पैडिंग सेट करने का भी प्रयास किया, लेकिन listview पैडिंग को अनदेखा कर रहा है।

<padding 
     android:bottom="15dp" 
     android:left="15dp" 
     android:right="15dp" 
     android:top="15dp" /> 

वहाँ listview विभक्त करने के लिए एक मार्जिन सेट करने के लिए किसी भी संभावना है - एडाप्टर के getView() को छोड़कर?

+0

सर्वश्रेष्ठ समाधान: http://stackoverflow.com/questions/14054364/how-to-assign-padding-to-listview-item-divider-line?lq=1 – ASP

उत्तर

81

इनसेट

<?xml version="1.0" encoding="UTF-8"?> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:insetLeft="15dp" 
    android:insetRight="15dp" > 

    <shape 
     android:shape="line" > 
     <stroke 
      android:dashGap="1dp" 
      android:dashWidth="1.5dp" 
      android:width="1dp" 
      android:color="#FF404040" /> 

      <size android:height="3dp" /> 

    </shape> 

</inset> 
+0

आसानी से सबसे अच्छा जवाब यहाँ। इन्सेट xml संरचना के लिए यह है। – Adam

+7

यदि हम सिर्फ एक लाइन चाहते हैं, तो <ठोस एंड्रॉइड: रंग = "@ रंग/list_divider" /> और सूची दृश्य में "एंड्रॉइड: dividerHeight" सेट करें – Maragues

3

यू u'll व्हाइट मिल स्ट्रोक के बजाय सही और वाम मार्जिन प्राप्त करने के लिए .. यह नमूना यह शुरू होता है और काला के साथ समाप्त होता प्रयास करें, केंद्र में .. ऐसा लगता है ढाल का उपयोग कर सकते की तरह u've मार्जिन

<gradient android:startColor="#000000" android:centerColor="#ffffff" 
    android:endColor="#000000" /> 
दिया
+0

यह एक अच्छा समाधान है , लेकिन मुझे विभाजक में धराशायी रेखा के लिए स्ट्रोक की आवश्यकता है, इसलिए मैं ढाल का उपयोग नहीं कर सकता। – Fabian

1

मैं इस पर विश्वास नहीं है संभव है:/हालांकि अगर आप प्रत्येक सूची आइटम के तल पर अपनी खुद की drawable जोड़ और निकाल listviews विभक्त आप फिर भी अनुकूलित कर सकते हैं आप चाहते हैं :)

फ़ोल्डर रेस बनाएं/आकर्षित करने और एक नया एक्सएमएल बनाने:

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

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

</shape> 

.. फिर उस सूची में उस ड्रायरेबल का उपयोग करें।

या एक बहुत त्वरित और गंदी तरह से एक पतली LinearLayout (या कुछ अन्य लेआउट) नकली एक अनुकूलन ListView विभक्त करने के लिए सूची आइटम के तल पर रंग की पृष्ठभूमि के साथ बनाने के लिए ऑप्टिकल फाइबर केबल होगा ..

नहीं एक उचित sollution , बस कुछ fixit विचारों;)

+0

यह मेरा पहला विचार था। एडाप्टर में इसे स्वयं संलग्न करें लेकिन मुझे नहीं पता कि यह peformant है या नहीं। – Fabian

+0

इसे आज़माएं और देखें;) या अपनी खुद की कस्टम सूची दृश्य बनाएं, हालांकि मुझे संदेह है कि यह मुसीबत के लायक होगा। – DecodeGnome

5

आप निम्न विचार का उपयोग कर सकते हैं:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/table_background"/> 
    </shape> 
</item> 
<item android:left="2dp" android:right="2dp"> 
    ... your shape here ... 
</item> </layer-list> 

यह मेरे लिए काम करता है। उम्मीद है कि यह मदद करेगा।

16

प्रयोग करें 'इनसेट' जाने का रास्ता है .....

(list_divider.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:insetLeft="50dp" 
    android:insetRight="50dp" > 

<shape> 
    <solid android:color="@color/orange" /> 
    <corners android:radius="2.0dip" /> 
</shape> 

</inset> 

और अपनी सूची दृश्य इस तरह जोड़ने ...

<ListView 
    android:dividerHeight="2dp" 
    android:divider="@drawable/list_divider" 
    ... 
/> 

आप इन्सेट मान सेट कर सकते हैं वांछित ...

+1

आप प्रत्येक सूचीदृश्य के लिए ऊंचाई दोहराने से बचने के लिए '<आकार एंड्रॉइड: ऊंचाई = "0.5 डीपी" /> 'तत्व सीधे' आकार 'में रख सकता है। – Natix