Мне нужно добавить, чтобы добавить ListView со сложным фоном элементов: разным для четных / нечетных и закругленных углов вверху и внизу. Выглядит это так:
Я реализовал все это через список уровней, но хочу сделать еще кое-что. Теперь нижний элемент находится в нижней части экрана. Лучше добавить немного места.
Я не хочу добавлять нижнее поле в ListView, мне нужно поле только для последнего элемента.
Я вижу способы сделать это:
Нижний колонтитул
Своего рода хак - добавить в ListView нижний колонтитул с пустым TextView. Но нижние колонтитулы - вещь довольно нестабильная, они обычно исчезают после notifyDataSetChanged и нет возможности вернуть их.
Изображение с прозрачными пикселями
Я попросил дизайнера добавить прозрачные пиксели в нижний фоновый ресурс. К сожалению, в этом случае полностью нарушается вертикальное центрирование. Например, есть 9patch вроде этого:
И раскладка такая:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- View with background with transparent pixels on bottom -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
android:id="@+id/item"
android:background="@drawable/some_bgr"
android:padding="10dp"
>
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"
android:text="Title"
android:layout_gravity="center"
android:textSize="18sp"
/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Detail"
android:layout_gravity="center"
android:textSize="18sp"
/>
</LinearLayout>
<!-- Just for marking place took by view -->
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_below="@id/item"
android:background="#88ff55"
/>
</RelativeLayout>
Результат:
Как видите, не работает центрирование. К сожалению. (Кстати, если указать этот 9patch в качестве фона для TextView, центрирование работает хорошо. Если вы знаете какую-либо статью, объясняющую это, дайте мне знать.)
Добавить нижнее поле к последнему элементу в реализации адаптера
Это должно сработать, но по неизвестной причине я все еще не могу заставить его работать. Мне это не нравится, потому что я не люблю изменять размеры в коде.
Так
Уже есть воображаемый способ - создать какой-нибудь XML-файл с определенным растровым изображением и полями. Согласно концепции чертежей это должно быть возможно, но я не могу найти реализацию. Может кто знает?
Есть другие идеи?