2012-06-19 4 views
29

Ich versuche, einen Rand zu einem listview Teiler zu setzen.
Der Teiler ist eine gestrichelte Linie:Listview Teiler Rand

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

und ein listview, wo ich den Teiler

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

aber ich möchte einen Teiler Rand links und rechts. Ich habe auch versucht, eine Polsterung auf die Form zu setzen, aber die listview ignoriert die Polsterung.

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

Gibt es eine Möglichkeit, einen Spielraum zum listview Teiler einzustellen - außer im getView() des Adapters?

+0

Beste Lösung: http://stackoverflow.com/questions/14054364/how-to-assign-padding-to-listview-item-divider-line?lq=1 – ASP

Antwort

81

Inset ist der Weg

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

Leicht die beste Antwort hier. Dafür ist die eingebaute xml-Struktur zuständig. – Adam

+7

Wenn wir nur eine Linie wollen, verwenden Sie und setzen Sie die Eigenschaft "android: dividerHeight" in der ListView – Maragues

3

U kann Gradient verwenden rechten und linken Rand statt Schlaganfall zu bekommen .. diese Probe Probieren Sie es beginnt und endet mit schwarz, u wird in der Mitte Weiß bekommen .. Es scheint wie u've Rand angegeben

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

Dies ist eine gute Lösung , aber ich brauche den Strich für die gestrichelte Linie im Teiler, also kann ich keinen Gradienten verwenden. – Fabian

1

ich glaube es nicht möglich ist:/Obwohl, wenn Sie Ihre eigenen ziehbar am unteren Rand der einzelnen Elemente Liste hinzufügen und entfernen Sie die Listviews Teiler Sie es Sie wollen :)

jedoch anpassen können

erstellen Sie die Ordner res/ziehbar und erstellen Sie ein neues 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> 

..Dann verwenden Sie das in Ihrem Listenelement ziehbare.

Oder eine wirklich schnelle und schmutzige Art und Weise würde OFC eine dünne Linearlayout (oder ein anderes Layout) mit farbigem Hintergrund am unteren Rande des Listenelementes zu fälschen ein anpassbaren Listview-Teiler zu schaffen ..

Keine richtige sollution , nur einige fixit Ideen;)

+0

Das war meine erste Idee. Befestigen Sie es selbst im Adapter, aber ich weiß nicht, ob dies richtig ist. – Fabian

+0

Probieren Sie es aus und sehen;) Oder machen Sie Ihre eigenen benutzerdefinierten ListView, obwohl ich bezweifle, dass es die Mühe wert wäre. – DecodeGnome

5

Sie können die folgende Idee verwenden:

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

Es funktioniert für mich. Hoffe es wird helfen.

16

Use 'Einsatz' zu gehen .....

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

und in der Listenansicht wie folgt hinzufügen ...

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

können Sie den Einschubwert a einstellen s gewünscht ...

+1

Sie kann das Element < 'direkt in die' Form' platzieren, um zu vermeiden, dass die Höhe für jede Listenansicht wiederholt wird. – Natix

Verwandte Themen