(Android) Füllen des ListView-Hintergrunds und Beibehalten der Header-Transparenz

Ich habe einen benutzerdefinierten Bildhintergrund, der den gesamten Bildschirm hinter einer ListView ausfüllt.

Die ListView hat eine Kopfzeile, die einige Daten enthält, dann einen transparenten 10-Bit-Rand (damit wir ein wenig vom Hintergrundbild sehen können) und dann einige weitere Daten. Unterhalb dieser Überschrift muss im "Hauptteil" der ListView der Hintergrund der ListView bis zum unteren Bildschirmrand ausgefüllt werden, auch wenn die darin enthaltenen Elemente nicht bis zum unteren Bildschirmrand reichen.

Wenn ich den Hintergrund der ListView einstelle, wird der gewünschte Effekt erzielt, wenn ich immer bis zum unteren Bildschirmrand fülle, auch wenn nur wenige Elemente (oder gar keine) vorhanden sind. Dies verdeckt aber auch den transparenten 10dp-Teiler in der Kopfzeile, sodass ich den benutzerdefinierten Hintergrund nicht mehr "durch" die Kopfzeile sehen kann.

Kann mir jemand bitte den richtigen Weg zeigen, um es zu bekommen?beide die Füllung des Bildschirms unter Beibehaltung der transparenten Trennlinie in der Kopfzeile?

Jemand erwähnte im Vorbeigehen, dass ich möglicherweise "gefälschte" Elementzellen erstellen muss, die verwendet werden könnten, um die Illusion eines ListView-Hintergrunds zu erzeugen, ohne den transparenten Teiler der Kopfzeile zu beeinträchtigen. Ich hoffe jedoch, wenn möglich eine einfachere Lösung zu findenist Die beste Lösung ist, zu sehen, ob mir jemand Hinweise geben kann, wie ich das am effizientesten bewerkstelligen kann.

Vielen Dank!

BEARBEITEN:

Hier ist, wie ich den Header definiere, obwohl ich denke, dass diese Frage mehr mit der ListView zu tun hat als mit diesem Header, den ich über addHeaderView () zur ListView hinzufüge.

<code><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:orientation="vertical">

    <include android:id="@+view_list_header/headertop"
        layout="@layout/view_list_item"/>

    **<LinearLayout android:id="@+view_list_header/ll_transparent_filler"
    android:layout_width="fill_parent" android:layout_height="10dp"/>**     

    <RelativeLayout android:id="@+view_list_header/sort" android:layout_width="fill_parent" android:layout_height="wrap_content">
        <TextView.../> <ImageView.../> <TextView.../>
    </RelativeLayout>
</RelativeLayout>
</code>

Daher habe ich verschiedene Möglichkeiten zum Erstellen des 10dp-Füllers ausprobiert. Derzeit verwende ich ein "leeres" 10dp-Linearlayout, damit ich einen Verweis darauf erhalten und dessen Sichtbarkeit auf GONE setzen kann, wenn ich möchte (was ich NICHT tue) in dem Fall, den ich diskutiere)

Ich stelle den Hintergrund der ListView so ein: listView.setBackgroundResource (resource).

Wenn ich den Hintergrund für diese ListView einstelle, wird das gewünschte Hintergrundverhalten immer auf dem gesamten Bildschirm angezeigt, auch wenn die Anzahl der Elemente, die ich zur Liste hinzugefügt habe (die übrigens alle dieselbe Hintergrundressource verwenden, die ich bin) Einstellung auf ListView) reicht nicht aus, um den Bildschirm auszufüllen. Aber wenn ich das mache, ist der 10dp "transparente Rand" in der Kopfzeile nicht sichtbar, da der ListViews-Hintergrund die zugrunde liegenden Ansichten daran hindert, gesehen zu werden.

Ich gehe davon aus, dass dies passiert, weil der Hintergrund der ListView auch hinter den Ansichten Kopf- und Fußzeile verläuft.

Der Punkt ist, dass es viele Möglichkeiten gibt, einen "transparenten Rand" von 10 dpi zwischen Elementen zu erstellen, durch den die zugrunde liegenden Ansichten sichtbar werden. Mein Problem liegt in der Schaffung eines Hintergrunds für dieListView "body"(d. h. nicht die Kopf- / Fußzeile), die immer den Bildschirm ausfüllt, selbst wenn die Liste teilweise gefüllt oder leer istund Gleichzeitig wird diese Transparenz in der Kopfzeile beibehalten, sodass ich weiterhin die Ansichten "hinter" der ListView sehen kann.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage