Android drawSelectorOnTop mit GridView

8

Ich entwickle eine Anwendung mit Registerkarten, in der eines der Fragmente, CollectionsFragment, ein GridView mit einem ImageView in jedem Slot enthält. Ich würde gerne einen Selektor verwenden, um den Benutzern Feedback zu geben, wenn der Benutzer auf eines der Bilder klickt.

Ich habe den Selektor erfolgreich implementiert, aber mein Problem ist, dass der Selektor nur im Hintergrund des Bildes zeichnet, aber ich möchte den Selektor über das gesamte Bild zeichnen lassen. Ich habe gesehen, dass dieses Problem an anderer Stelle angesprochen wurde, aber die von vielen ausgewählte Lösung, die die Eigenschaft drawSelectorOnTop der GridView festlegt, funktioniert nicht für mich.

Das relevante Fragment mit dem entsprechenden Adaptercode:

%Vor%

Und mein Wähler aus Gründen der Vollständigkeit:

%Vor%

Danke für jede Hilfe,

    
lbrendanl 27.11.2013, 22:24
quelle

2 Antworten

15

Ich denke du irrst dich bezüglich setDrawSelectorOnTop(boolean) . Das selector Zeichenelement, auf das hier verwiesen wird, ist GridViews internes selector Zeichenelement.

Auch wenn in der einfachsten Implementierung von GridView auf ein Rasterelement geklickt wird, wird der blaue Rahmen um es herum gezeichnet. Dies liegt daran, dass der Selektor von gridview standardmäßig auf das Element behind gezeichnet wird. Wenn Sie setDrawSelectorOnTop(true) aufrufen, wird der Selektor (blau) über das Element gezogen.

Aber setDrawSelectorOnTop(boolean) hat nichts mit dem Selektor zu tun, den Sie im Adapter einstellen. Unabhängig davon, ob Sie true oder false übergeben, ändert sich das Verhalten des ImageView-Selektors nicht.

Lösung:

Anstatt den Selektor auf jedem ImageView innerhalb des Adapters zu setzen, lassen Sie GridView Ihren Selektor ziehbar machen:

%Vor%

Nun, es gibt keine Notwendigkeit für:

%Vor%

Bearbeiten:

Obwohl ich das nicht empfehle (offensichtlich Overhead), sollte es funktionieren:

%Vor%     
Vikram 01.12.2013, 07:58
quelle
2
  1. Versuchen Sie, das xml attribute android:drawSelectorOnTop in Ihrer activity_collections.xml -Datei

  2. zu setzen
  3. Sehen Sie, ob gridView.setDrawSelectorOnTop(true); nach gridView.setAdapter(); hilft. Manchmal ist die Reihenfolge wichtig (seltsam)

  4. Wenn alles andere fehlschlägt, müssen Sie GridView möglicherweise zu einer anderen Ansicht wechseln, in der es sich herausgestellt hat, dass setDrawSelectorOnTop () konsistent funktioniert.

HTH

    
VJ Vélan Solutions 01.12.2013 01:41
quelle