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,
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% Versuchen Sie, das xml attribute android:drawSelectorOnTop
in Ihrer activity_collections.xml
-Datei
Sehen Sie, ob gridView.setDrawSelectorOnTop(true);
nach gridView.setAdapter();
hilft. Manchmal ist die Reihenfolge wichtig (seltsam)
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
Tags und Links java android android-gridview android-selector