Ist es möglich, über die Listenauswahl einen benutzerdefinierten Hintergrund auf jedes Listview-Element anzuwenden?
Die Standardauswahl gibt @android:color/transparent
den state_focused="false"
Fall an, aber das Ändern dieser Auswahl in eine benutzerdefinierte Zeichnungsfunktion wirkt sich nicht auf Elemente aus, die nicht ausgewählt sind. Romain Guy scheint in dieser Antwort darauf hinzuweisen, dass dies möglich ist.
Ich erreiche derzeit den gleichen Effekt, indem ich für jede Ansicht einen benutzerdefinierten Hintergrund verwende und ihn ausblende, wenn das Element ausgewählt / fokussiert / was auch immer angezeigt wird, aber es wäre eleganter, dies alles an einem Ort zu definieren.
Als Referenz ist dies der Selektor, mit dem ich versuche, dies zum Laufen zu bringen:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false"
android:drawable="@drawable/list_item_gradient" />
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true" android:state_enabled="false"
android:state_pressed="true"
android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true" android:state_enabled="false"
android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="true"
android:drawable="@drawable/list_selector_background_focus" />
</selector>
Und so stelle ich den Selektor ein:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:listSelector="@drawable/list_selector_background" />
Vielen Dank im Voraus für jede Hilfe!