2012-06-19 12 views
29

Sto provando a impostare un margine su un divisore listview.
Il divisore è una linea tratteggiata:margine divisore 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> 

e un listview dove i impostare il divisore

<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" 
    /> 

ma voglio un divisore margine bilaterale. Ho anche provato a impostare un padding sulla forma, ma lo listview sta ignorando il padding.

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

C'è la possibilità di impostare un margine al listview divisorio - tranne in GetView() dell'adattatore?

+0

La migliore soluzione: http://stackoverflow.com/questions/14054364/how-to-assign-padding-to-listview-item-divider-line?lq=1 – ASP

risposta

81

Inset è la strada da percorrere

<?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

Facilmente la migliore risposta qui. Questo è ciò che la struttura xml di inset è per. – Adam

+7

Se vogliamo solo una linea, usa e imposta la proprietà "android: dividerHeight" in ListView – Maragues

3

U può utilizzare Gradiente per ottenere margine di destra e di sinistra, invece di ictus .. Prova questo campione che inizia e finisce con il nero, nel centro u'll ottenere Bianco .. Si presenta come u've dato margine

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

Questa è una buona soluzione , ma ho bisogno del tratto per la linea tratteggiata nel divisore, quindi non posso usare un gradiente. – Fabian

1

non credo sia possibile:/Anche se si aggiunge il proprio drawable in fondo a ogni elemento della lista e rimuovere le ListViews divisorio si può personalizzare come vuoi :)

Creare le cartella res/disegnabile e creare un nuovo xml:

<?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> 

.. Quindi utilizzare quello drawable nella voce dell'elenco.

O un modo davvero rapido e sporco sarebbe OFC per creare un LinearLayout sottile (o qualche altro layout) con sfondo colorato sul fondo della voce di elenco di falsificare un divisore ListView personalizzabile ..

Non una vera e propria sollution , solo alcune idee Fixit;)

+0

Questa è stata la mia prima idea. Collegalo da solo nell'adattatore, ma non so se questo è utile. – Fabian

+0

Provalo e guarda;) Oppure crea il tuo ListView personalizzato, anche se dubito che ne varrebbe la pena. – DecodeGnome

5

È possibile utilizzare la seguente idea:

<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> 

funziona per me. Spero che ti sarà d'aiuto.

16

Usa 'inserto' .....

(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> 

e nella vista lista aggiungere come questo ...

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

è possibile impostare il valore di inserto a s desiderato ...

+1

You puoi posizionare l'elemento '' direttamente nella 'forma' per evitare di ripetere l'altezza per ogni listview. – Natix

Problemi correlati