2012-06-19 11 views
29

Estoy tratando de establecer un margen para un divisor listview.
El divisor es una línea discontinua:Margen divisor de vista de lista

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

y una listview donde hice el divisor

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

pero quiero un divisor margen izquierda y derecha. También traté de establecer un relleno a la forma, pero el listview está ignorando el relleno.

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

¿Hay alguna posibilidad de establecer un margen a la listview divisor - excepto en el getView() del adaptador?

+0

Mejor solución: http://stackoverflow.com/questions/14054364/how-to-assign-padding-to-listview-item-divider-line?lq=1 – ASP

Respuesta

81

recuadro es el camino a seguir

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

Fácilmente la mejor respuesta aquí. Esto es para lo que está insertada la estructura xml. – Adam

+7

Si solo queremos una línea, use y configure la propiedad "android: dividerHeight" en el ListView – Maragues

3

U puede utilizar para obtener Gradiente margen derecha y la izquierda en lugar de accidente cerebrovascular .. Pruebe esta muestra se inicia y termina con negro, en el centro de ua obtener blanca .. Aparece como U'VE dado margen

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

Esta es una buena solución , pero necesito el trazo de la línea discontinua en el divisor, así que no puedo usar un degradado. – Fabian

1

no creo que sea posible:/Aunque si se agrega su propio estirable en la parte inferior de cada elemento de la lista y eliminar los listviews divider se puede personalizar como quieras :)

Crear las carpetas res/dibujable y crea un nuevo 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> 

.. Luego use ese dibujable en su elemento de la lista.

O una manera muy rápida y sucia sería OFC para crear un LinearLayout delgada (o algún otro diseño) con el fondo de color en la parte inferior del elemento de la lista de falsificar un divisor ListView personalizable ..

No

una adecuada sollution , sólo algunas ideas fixit;)

+0

Esta fue mi primera idea para. Adjúntelo usted mismo en el Adaptador, pero no sé si esto es pectoral. – Fabian

+0

Pruébelo y vea;) O haga su propio ListView personalizado, aunque dudo que valga la pena. – DecodeGnome

5

puede utilizar la siguiente 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> 

funciona para mí. Espero que ayude

16

Uso 'inserción' .....

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

y en su vista de lista añadir como esto ...

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

puede establecer el valor de inserción a s deseado ...

+1

Usted puede colocar el elemento '' directamente en la "forma" para evitar repetir la altura de cada vista de lista. – Natix

Cuestiones relacionadas