Как установить ширину разделителя ListView?
Как я могу установить ширину моего пользовательского разделителя ListView, чтобы он был меньше ширины моей строки?
4 ответа
Сделайте 9 патчей PNG с прозрачными пикселями слева и справа. Например, 53x4 .9.png, который имеет 25 прозрачных пикселей с каждой стороны (+ пиксели к 9 исправлениям), растянет 1 пиксель, так что с каждой стороны будет 25 пикселей.
RecyclerView
как правило, предпочтительнее, чем использование ListView
сейчас. Посмотрите эти вопросы и ответы, чтобы узнать, как установить ширину разделителя в 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);
И передайте это drawable, которое вы можете включить в свои res/drawable папки. Если вы хотите, чтобы он проходил почти по всей длине, вы можете просто сделать 9-патч, который содержит горизонтальную линию с таким количеством прозрачности на левой и правой сторонах, как вы хотите. И установите его, чтобы растянуть среднюю часть линии.