web-dev-qa-db-fra.com

Marge du diviseur de liste

J'essaie de définir une marge sur un diviseur listview.
Le séparateur est une ligne pointillée:

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

et un listview où je mets le diviseur

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

mais je veux un diviseur marge gauche et droite. J'ai également essayé de définir un rembourrage à la forme, mais le listview ignore le rembourrage.

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

Existe-t-il une possibilité de définir une marge sur le diviseur listview - sauf dans getView () de l'adaptateur?

33
Fabian

L'encart est le chemin à parcourir

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

Utilisez 'encart' .....

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

et dans votre liste, ajoutez comme ceci ...

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

vous pouvez définir la valeur d'encart comme vous le souhaitez ...

16
ASP

Vous pouvez utiliser l'idée suivante:

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

Ça marche pour moi. J'espère que cela vous aidera.

5

U peut utiliser Gradient pour obtenir la marge droite et gauche au lieu du trait .. Essayez cet exemple, il commence et se termine par du noir, au centre vous obtiendrez du blanc .. Il semble que vous ayez donné une marge

 <gradient Android:startColor="#000000" Android:centerColor="#ffffff"
    Android:endColor="#000000" />
3
Pradeep

Je ne pense pas que ce soit possible:/Bien que si vous ajoutez votre propre dessinable au bas de chaque élément de la liste et supprimez le séparateur ListViews, vous pouvez le personnaliser comme vous le souhaitez :)

Créez le dossier res/drawable et créez un nouveau 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>

..Ensuite, utilisez ce dessin dans votre élément de liste.

Ou un moyen très rapide et sale serait de créer un mince LinearLayout (ou une autre mise en page) avec un arrière-plan coloré en bas de l'élément de liste pour simuler un diviseur ListView personnalisable.

Pas une bonne solution, juste quelques idées fixes;)

1
DecodeGnome