Muszę dodać, aby dodać ListView ze skomplikowanym tłem elementów: różne dla parzystych / nieparzystych i zaokrąglonych rogów na górze i na dole. To wygląda tak:
Zaimplementowałem to wszystko za pomocą listy poziomów, ale jest jeszcze jedna rzecz, którą chcę zrobić. Teraz dolny element znajduje się u dołu ekranu. Lepiej jest dodać trochę miejsca.
Nie chcę dodawać dolnego marginesu do ListView, potrzebuję marginesu tylko dla ostatniego elementu.
Sposoby, które widzę, aby to zrobić:
Stopka
Coś w rodzaju włamania - dodaj stopkę z pustym TextView do ListView. Ale stopki są dość niestabilne, zwykle znikają po notifyDataSetChanged i nie ma sposobu, aby je odzyskać
Obraz z przezroczystymi pikselami
Poprosiłem projektanta o dodanie przezroczystych pikseli do dolnego zasobu tła. Niestety w tym przypadku centrowanie w pionie jest całkowicie zerwane. Na przykład istnieje 9 łatek takich jak ten:
I układ taki jak ten:
<?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>
Wynik:
Jak widać, centrowanie nie działa. Niestety. (Przy okazji, jeśli określisz tę 9 poprawkę jako tło dla TextView, wyśrodkowanie działa dobrze. Jeśli znasz jakiś artykuł wyjaśniający to, daj mi znać.)
Dodaj dolny margines do ostatniego elementu w implementacji adaptera
To powinno działać, ale z nieznanego powodu nadal nie mogę sprawić, by zadziałało. Nie podoba mi się ten sposób, ponieważ nie lubię modyfikować wymiarów w kodzie.
Więc
Jest już wyimaginowany sposób - skonstruuj jakiś XML do rysowania z określoną bitmapą i marginesem. Zgodnie z koncepcją drawables powinno to być możliwe, ale nie mogę znaleźć implementacji. Może ktoś wie?
Jakieś inne pomysły?