Ich muss hinzufügen, um ListView mit kompliziertem Hintergrund hinzuzufügen: unterschiedlich für gerade / ungerade und abgerundete Ecken oben und unten. Es sieht aus wie das:
Ich habe all diese Dinge über die Level-Liste implementiert, aber ich möchte noch etwas tun. Jetzt befindet sich das untere Element am unteren Bildschirmrand. Es ist besser, etwas Platz hinzuzufügen.
Ich möchte ListView keinen unteren Rand hinzufügen, ich benötige nur einen Rand für das letzte Element.
Wie ich das sehe:
Fusszeile
Eine Art Hack - Fügen Sie ListView eine Fußzeile mit leerem TextView hinzu. Fußzeilen sind jedoch ziemlich instabile Dinge. Sie verschwinden normalerweise nach notifyDataSetChanged und es gibt keine Möglichkeit, sie zurückzubekommen
Bild mit transparenten Pixeln
Ich habe den Designer gebeten, transparente Pixel zur unteren Hintergrundressource hinzuzufügen. Leider ist in diesem Fall die vertikale Zentrierung vollständig unterbrochen. Zum Beispiel gibt es 9patch wie folgt:
Und Layout wie folgt:
<?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>
Das Ergebnis:
Wie Sie sehen, funktioniert die Zentrierung nicht. Unglücklicherweise. (Übrigens, wenn Sie dieses 9-Patch als Hintergrund für TextView angeben, funktioniert die Zentrierung gut. Wenn Sie einen Artikel kennen, der dies erklärt, lassen Sie es mich bitte wissen.)
Fügen Sie dem letzten Element in der Adapter-Implementierung den unteren Rand hinzu
Das sollte funktionieren, aber aus unbekannten Gründen kann ich es immer noch nicht zum Laufen bringen. Ich mag diesen Weg nicht, weil ich Dimensionen im Code nicht ändern möchte.
So
Es gibt bereits einen imaginären Weg - konstruieren Sie XML, das mit einer bestimmten Bitmap und einem bestimmten Rand gezeichnet werden kann. Nach dem Drawables-Konzept sollte es möglich sein, aber ich kann keine Implementierung finden. Kann jemand wissen?
Irgendwelche anderen Ideen?