2010-11-08 16 views
13

j'ai réussi à comprendre comment créer une forme personnalisée (avec un trait pointillé) en créant un fichier appelé dash.xml à l'intérieur des /app/res/dossier drawable/:Comment créer un ListView avec des séparateurs de lignes en pointillés/pointillés sur Android?

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

Maintenant, je suis confus quant à la façon d'appliquer cette forme à un ListView. J'ai essayé ce qui suit, mais aucun diviseur n'est affiché:

<ListView android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:cacheColorHint="#00000000" 
    android:divider="@drawable/dash" 
    android:dividerHeight="1dp" 
/> 

Wtf?

Répondre

34

Voici le mien et il fonctionne:

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

Vous devrez peut-être ajouter android: layerType = "software" au noeud référençant la forme. Au moins sur certains appareils, la ligne pointillée apparaîtra solide. – Steven

+0

À titre d'exemple d'un périphérique sur lequel layerType résout problème de ligne continue est Nexus 5 avec 4.4.3. –

+0

Ce doit être la réponse acceptée! travail impressionnant –

6

Vous avez également besoin de android:dividerHeight. Les formes sont de taille variable, et maintenant vous avez un diviseur de hauteur zéro.

+0

Shoot, j'ai oublié d'ajouter que dans mon exemple ci-dessus, mais lors de l'essai, un dividerHeight a été inclus. Merci d'avoir fait remarquer cela! – iamkoa

2
  1. Define layerType montrer le diviseur de ligne en pointillé ne pas oublier de donner de la hauteur de diviseur.

<ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000" android:divider="@drawable/dash" android:dividerHeight="1dp" android:layerType="software"/>