Как создать ListView с пунктирными разделителями строк в Android?

Мне удалось выяснить, как создать пользовательскую форму (с пунктирным штрихом), создав файл под названием dash.xml внутри папки /app/res/drawable/:

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

Теперь я смущен тем, как применить эту форму к ListView. Я пробовал следующее, но не отображается разделитель:

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

Ответы

Ответ 1

Вот мой, и он работает:

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

Ответ 2

Вам также потребуется android:dividerHeight. Формы являются переменными размерами, и теперь у вас есть делитель с нулевой высотой.

Ответ 3

  • Определить layerType для отображения разделителя пунктирной линии не забудьте указать высоту разделителя.

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