2010-12-30 4 views
2

Wenn ich Code eintrug, um ein Kontextmenü anzuzeigen, funktionierte es gut, außer dass das Menü nicht nur nach einem stationären langen Drücken sondern auch (unerwünscht) am Ende erschien von einem Ziehen.Android: Wie kann ich verhindern, dass ein Ziehen als langes Drücken interpretiert wird

Ich konnte dies verhindern, indem ich ein ScrollInProgress-Flag zur Ansicht hinzufüge, indem ich dieses Flag am Anfang der Methode onCreateContextMenu (...) ankreuze und das Flag durch Umgehen des Codes gesetzt wird Das fügt dem Kontextmenü Elemente hinzu.

Ich frage mich jedoch, ob es eine einfachere Möglichkeit gibt, das Erstellen eines Kontextmenüs zu verhindern, wenn der Bildschirm gezogen wird.

+0

Wir haben keine Ahnung, ohne etwas Code zu sehen. Zeigen Sie uns, wie Sie Verzögerungen/lange Klicks erkennen. – Falmarri

+0

Als Antwort auf Falmarri: Ich habe eine Klasse MyGestureDetector definiert, die SimpleOnGestureListener erweitert; Innerhalb dieser Klasse wird die Methode onScroll (...) außer Kraft gesetzt, und dort setze ich das Attribut scrollInProgress auf true; In der Hauptaktivierung der App ist die Zeile 'gestenDetektor = neuer GestenDetektor (new MyGestureDetector());'. So wird der Start eines Scrolls (Drag) erkannt. Das lange Drücken wird einfach durch Einfügen des Befehls 'registerForContextMenu (myView); 'in der onCreate-Aktivität der Hauptaktivität (...) und dann Schreiben von Code für' onCreateContextMenu 'und' onContextItemSelected 'erkannt. – prepbgg

+0

Bitte lassen Sie mich wissen, wenn ich diese Beschreibung überhaupt ausfüllen muss. – prepbgg

Antwort

0

Um zu verdeutlichen, ist es nicht der Gesten-Detektor, der die lange Presse aufnimmt? Wenn dies der Fall ist, kann dies mit setIsLongpressEnabled (boolean isLongpressEnabled) deaktiviert werden

+0

Danke für Ihre Antwort. Ich möchte, dass die App ein langes Drücken erkennt (und ein Kontextmenü anzeigt), wenn kein Ziehen ausgeführt wird. Meinst du, dass ichIsLongpressEnabled in der onScroll-Methode von MyGestureDetector auf false setzen sollte (wo ich derzeit mein ScrollInProgress-Flag setze), und setIsLongpressEnabled auf true setzen, wenn das Ende des Scrolls erkannt wurde? – prepbgg

Verwandte Themen