Как установить ширину разделителя ListView?

Как установить ширину моего настраиваемого разделителя ListView, чтобы она была меньше ширины строки?

Ответ 1

Сделайте 9 патчей png с прозрачными пикселями слева и справа. Например, 53x4.9.png, который имеет 25 прозрачных пикселей с обеих сторон (+ пиксели на 9patch его), будет растягивать 1 пиксель, так что есть 25 пикселей по обе стороны от него.

Ответ 2

A RecyclerView обычно предпочтительнее использования ListView. См. этот Q & A, как установить ширину разделителя в RecyclerView.

Использовать <inset>

вытяжка/list_divider.xml

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="10dp"
    android:insetRight="10dp" >

    <shape android:shape="rectangle" >
        <solid android:color="@color/list_divider_color" />
    </shape>

</inset>

И в вашем макете:

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:cacheColorHint="#00000000"
    android:divider="@drawable/list_divider"
    android:dividerHeight="1dp" >
</ListView>

enter image description here

Источники:

Ответ 3

Если вы не хотите делать 9 патчей, вы можете вставить

<View android:layout_width="fill_parent" android:layout_height="1dp" android:layout_marginTop="4dp" android:background="#33B5E5" />

в вашем xml-коде list_item. Он создает синюю линию, и вы можете легко контролировать ширину этой линии. Чтобы сделать это успешным, вам придется отключить разделитель списка. Что дано здесь

Ответ 4

Вы можете позвонить

mListView.setDivider(Drawable d);

И передайте его доступным, который вы можете включить в свои папки res/drawable. Если вы хотите сделать это почти полностью, вы можете просто сделать 9 патчей, которые содержат горизонтальную линию с такой же прозрачностью на левой и правой сторонах, сколько захотите. И установите его, чтобы растянуть среднюю часть линии.