Das Standard-Spinner-Verhalten ist, dass wenn es "geschlossen" ist, langes Drücken auf es "öffnet" und zeigt Ihnen die Dropdown-Ansicht. Ich finde, dass dieses Verhalten für den Benutzer möglicherweise sehr problematisch ist. Zum Beispiel, wenn sie versuchen, etwas auf dem Bildschirm zu scrollen, und zufällig einen Punkt mit einem Drehknopf "greifen", dann wird, anstatt zu scrollen, die Dropdown-Ansicht nach einer Sekunde geöffnet, und der Benutzer ist es im Grunde mit dem Finger auf eine der Dropdown-Optionen verlassen (die sie jetzt versehentlich drücken können).
Also möchte ich das lange Drücken-Verhalten deaktivieren und den Spinner "öffnen" lassen, wenn nur angeklickt und nicht lange gedrückt wird. Ist das möglich?
Also, ich habe einen relativ einfachen Weg gefunden, dies zu tun, obwohl es nicht sehr elegant ist. Im Grunde habe ich eine transparente Overlay-Ansicht oben auf dem Drehfeld erstellt und einen OnClickListener festgelegt, der nur den Klick eines Drehers auslöst.
XML:
%Vor%Java:
%Vor%Wenn Sie nur das standardmäßige Klickverhalten wiederherstellen müssen, ist dies eine einfachere und kompaktere Version von Jordi's Antwort :
%Vor% Dieses Verhalten hat mich auch gestört. Nach der Untersuchung scheint es einen Namen zu haben: ziehe zum Öffnen . Sie können sehen, wie es in der Quelle von AppCompatSpinner#onTouchEvent()
Methode.
Einige Probleme, die ich mit diesem erzwungenen Verhalten sehe (und der Grund, warum manche Leute es deaktivieren wollen):
Ich habe ein entsprechendes Ticket auf dem AOSP-Problemverfolger geöffnet: # 228953 . Fühlen Sie sich frei, ihm zu folgen oder zu kommentieren, wenn ich etwas verpasst habe.
Haben Sie versucht, android: longClickable="false" in xml noch?
oder versuchen Sie etwas wie folgt:
%Vor%Etwas spät, aber vielleicht immer noch nützlich für jemanden:
Das Festlegen eines OnLongClickListener
, das true
in onLongClick
zurückgibt, verhindert ein (unbeabsichtigtes) Öffnen von Spinner
, da es so funktioniert, als ob der Callback den langen Klick verbraucht hätte, wie in Dokumentation .
Der einzige Nachteil ist, dass der Spinner nach einem langen Klick immer noch die onTouch Animation hat.
Tags und Links android spinner long-press