2010-11-08 5 views
13

sono riuscito a capire come creare una forma personalizzata (con un tratto tratteggiata) con la creazione di un file chiamato dash.xml all'interno delle /app/res/drawable/ cartella:Come si crea un ListView con divisori tratteggiati/punteggiati in 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> 

Ora sono confuso su come applicare questa forma a un ListView. Ho provato il seguente, ma non viene visualizzato alcun divisore:

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

risposta

34

Qui è mio e funziona:

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

Potrebbe anche essere necessario aggiungere android: layerType = "software" al nodo che fa riferimento alla forma. Almeno su alcuni dispositivi la linea tratteggiata apparirà solida. – Steven

+0

Come esempio di un dispositivo su cui layerType risolve il problema della linea continua è Nexus 5 con 4.4.3. –

+0

Deve essere la risposta accettata! lavoro fantastico –

6

È inoltre necessario android:dividerHeight. Le forme sono di dimensioni variabili e in questo momento hai un divisore a altezza zero.

+0

Spara, ho dimenticato di aggiungere che nel mio esempio di cui sopra, ma quando i test, un dividerHeight è stato incluso. Grazie per averlo indicato! – iamkoa

2
  1. Definire layerType per mostrare la linea di divisione tratteggiata non dimenticate di dare altezza divisore.

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

Problemi correlati