/ / GridView-Kinder zeigen keinen Fokus an - Android, Gridview, Fokus

GridView-Kinder zeigen keinen Fokus an - Android, Gridview, Fokus

In einer Android App habe ich eine GridView HoldingTextView erstellt von einem Adapter. In diesen TextView füge ich ein Icon hinzu, das drei Zustände hat (gedrückt, ausgewählt und Standard). Ich habe den Standardselektor der GridView mit entfernt android:listSelector="#00000000" und ich möchte den ausgewählten Zustand des Symbolsstattdessen anzeigen. Aber obwohl der gedrückte Zustand funktioniert (dh wenn die Textansicht gedrückt wird, wird die gedrückte Version der Symbole angezeigt), wird die ausgewählte Version nicht angezeigt.

Ich habe diese Tricks ausprobiert (gefunden an verschiedenen Stellen im Internet), aber es hat auch nicht funktioniert:

  • Rahmen

    android:descendantFocusability="afterDescendants"
    
  • oder

    android:drawSelectorOnTop="true"
    
  • oder (in den TextViews)

    android:duplicateParentState="true" />
    

Und wenn ich TextView als fokussierbar einstelle, erhält es den Fokus unabhängig von der GridView (dh wenn man darauf klickt, wird die GridView onClick Methode nicht aufgerufen ...)

Das Symbol ist in einer XML-Datei wie folgt definiert:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/ic_flag_bg_pressed"/>
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/ic_flag_bg_pressed"/>
<item android:state_focused="true"
android:drawable="@drawable/ic_flag_bg_selected"/>
<item android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/ic_flag_bg_default"/>
</selector>

Gibt es eine Möglichkeit, der GridView mitzuteilen, dass sie den fokussierten Zustand an ihre Kinder weitergeben soll?

Antworten:

0 für die Antwort № 1

Ist auch hier festgefahren. Ein alternativer Ansatz, der in Ordnung aussehen kann, besteht darin, einen Rahmenstil-Selektor zu verwenden und ihn oben zu zeichnen.