Я пытаюсь добавить разделитель между элементами в вертикальном LinearLayout, чтобы имитировать внешний вид ListView. (Я не могу просто использовать ListView в этой конкретной ситуации.)
Это то, что у меня есть в list_divider.xml:
<?xml version="1.0" encoding="utf-8"?>
<View
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/panel_border"
android:layout_width="fill_parent"
android:layout_height="@dimen/border_width"
/>
И вот код, который пытается раздуть этот делитель перед каждым элементом, кроме первого в списке:
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < categories.size(); i++ ) {
if (i > 0)
items.addView(vi.inflate(R.layout.list_divider, null));
// these dividers never appear
// but these main entries always appear just fine
items.addView(ad.getView(i, null, null));
}
Элементы основного списка отображаются правильно, но разделители невидимы.
Разделители появляются, если я изменяю их как TextView, а не простой. View:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/panel_border"
android:layout_width="fill_parent"
android:layout_height="@dimen/border_width"
android:text="---"
/>
Я попытался установить явные значения пикселей для ширины и высоты, а также использовать параметры border_width и fill_parent. Это не имеет значения.
Есть ли что-то особенное в простом старом представлении, которое не отображает его?
В конце концов я работал над этим, обернув мой divider View внутри FrameLayout. Кажется, что наличие единственного пустого представления без содержимого просто не работает.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<View
android:background="@color/panel_border"
android:layout_width="fill_parent"
android:layout_height="@dimen/border_width" />
</FrameLayout>