ListItemBackgroundDrawable aus System hohlen?

  • 2 Antworten
  • Letztes Antwortdatum
B

binneuhier

Fortgeschrittenes Mitglied
10
Hi,

ich habe eine ViewGroup, welche beim Klick genauso aussehen soll, wie wenn man auf ein ListItem aus einem ListView klickt.

das habe ich ganz leicht hinbekommen mit:

HTML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@android:drawable/list_selector_background"
    >
    <ImageView/>
    <TextView/>
</LinearLayout>
mit der Zeile:
-> android:background="@android:drawable/list_selector_background"

das ist ein drawable was in jedem Handy vorhanden ist. Dieses Drawable nutzt auch jede ListView beim jedem ListItem.

Dieses Drawable definiert, wie ein ListItem aussieht:
- wenn es disabled ist
- wenn es focus hat
- wenn es geklickt wird
- macht auch den LongKlick Effekt

Jetzt zu meinem Problem:
Bei Geräten ab Version 3.X (inkl. 4.X) ist dieses Drawable zwar noch vorhanden, aber sieht aus wie bei 2.X

Die ListView bei Geräten ab 3.X nutzen nämlich ein anderes Drawable, mit dem Namen list_selector_holo_dark/light

jetzt könnte ich hergehen und ein Layout machen für v8 mit dem alten Drawable und ein Layout machen für v11 mit dem neuen Drawable.
(geht ja einfach über die Ordnerstruktur)

Das Problem ist, dass das neue Drawable nicht nutzbar ist, da nicht public.
(Fehlermeldung im xml des Layouts)

Irgendwo hab ich gelesen ich soll das Drawable (inkl. Farben,PNGs, Transitionen, ...) einfach ins Projekt kopieren. Das stellt mich aber vor einem neuen Problem:
Nicht jeder nutzt das default Design, bei Nexusgeräten(2.X) ist ein ListItemClick Orange, bei HTC Geräten ist ein ListItemClick Grün, bei CyanogenMod kann man das Design frei wählen.
(Bei 2.X ist das kein Problem, denn da kann ich das Systemdrawable nutzen)
zb. bei 4.X ist der ListItemClick hellblau, hat jemand jedoch ein anderes Design und ich kopier "fest" die PNGs ins Projekt so sieht das dann schei*e aus.

Kann man das verstehen? ;)

hat jemand vl eine Lösung für mich?

zur Info:
Mein Fragment hat eine ListView und _darüber_ ist ein LinearLayout(horizontal). Als Header der nicht mitscrollt. Das LinearLayout macht nichts anderes als "ListItem hinzufügen". Beim klick soll es jedoch so aussehen als wäre es ein Teil der Liste darunter, der nicht mitscrollt.

gruß und danke
 
blöde frage aber hat niemand ne Lösung oder versteht man das problem nicht?

Sent from my GT-S5830 using Tapatalk
 
verstehen tu ich es schon nur es ist halt schwierig und ich bin mir nicht sicher ob mein Lösungsansatz der richtige ist bzw geh ich davon aus, das es nicht das ist was du willst.


Aber gut, du könntest im Code abfragen welche Version (Android Version) aktuell genutzt wird und dann könntest du das drawable im Code setzten .... nur ich weiß dann halt nicht wie sich das mit den verschiedenen Farben verhält, so könntest du wiederrum sicher stellen das du bei geräten < 3 drawable a benutzt und geräte > 3 drawable b benutzt ...
 
Zurück
Oben Unten