Ответ 1
Сделайте 9 патчей png с прозрачными пикселями слева и справа. Например, 53x4.9.png, который имеет 25 прозрачных пикселей с обеих сторон (+ пиксели на 9patch его), будет растягивать 1 пиксель, так что есть 25 пикселей по обе стороны от него.
Как установить ширину моего настраиваемого разделителя ListView, чтобы она была меньше ширины строки?
Сделайте 9 патчей png с прозрачными пикселями слева и справа. Например, 53x4.9.png, который имеет 25 прозрачных пикселей с обеих сторон (+ пиксели на 9patch его), будет растягивать 1 пиксель, так что есть 25 пикселей по обе стороны от него.
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>
Источники:
Если вы не хотите делать 9 патчей, вы можете вставить
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginTop="4dp"
android:background="#33B5E5" />
в вашем xml-коде list_item. Он создает синюю линию, и вы можете легко контролировать ширину этой линии. Чтобы сделать это успешным, вам придется отключить разделитель списка. Что дано здесь
Вы можете позвонить
mListView.setDivider(Drawable d);
И передайте его доступным, который вы можете включить в свои папки res/drawable. Если вы хотите сделать это почти полностью, вы можете просто сделать 9 патчей, которые содержат горизонтальную линию с такой же прозрачностью на левой и правой сторонах, сколько захотите. И установите его, чтобы растянуть среднюю часть линии.