Wie kann ich OnTouch -Ereignisse beibehalten, die von einem Widget behandelt werden, auch wenn sich Berührungskoordnungen nicht mehr im Widget befinden, in Android

StackOverflow https://stackoverflow.com/questions/6803959

Frage

Entschuldigung für die komplexe Frage, lassen Sie mich erklären. Ich habe ein benutzerdefiniertes Widget erstellt, das einige Ontouch -Events übernimmt. Was ich tun möchte, ist, wenn ich ein Touch -Ereignis auf diesem benutzerdefinierten Widget (Ondown) beginne. Ich möchte, dass dieses Widget dieses Ereignis weiterhin bearbeitet, auch wenn die absoluten Koordinationen nicht in diesem Widget enthalten sind.

Ich habe eine Scrollview und darüber hinaus (innerhalb der Scrollview) ein Widget, das (links - rechts) Scrolls verarbeitet. Aber wenn ich die Finger vertikal bewege, werden die Ontouch -Ereignisse von der Scollview konsumiert und behandelt. Wenn es eine Möglichkeit gibt, Scrollview zu fördern, um Touch -Ereignisse zu verarbeiten, oder das benutzerdefinierte Widget besser zwingen, den Touchentest weiterhin umzugehen, wenn ich das OnTouchEvent im benutzerdefinierten Widget starte?

Update Ich bin darauf gestoßen http://groups.google.com/group/android-framework/browse_thread/thread/2cdd4269dfb2772e?pli=1 .

Das funktioniert in meinem Fall, wenn sich das benutzerdefinierte Widget nicht in einer Scroll -Ansicht wie "Scrollview" befindet. Der Versuch, das "Bienenwesen in einem Scrolling -Objekt zu bienen

War es hilfreich?

Lösung

Rufen Sie in der Ontouch -Handler Ihres Widgets (z. Elternschaft.RequestDisallowInterceptTouchEvent (wahr). Diese Methode bittet im Grunde genommen den übergeordneten (in Ihrem Fall die Scrollview) und sein Vorfahr, das Touch -Ereignis nicht abzufangen.

Andere Tipps

Sie müssen eine spezielle Unterklasse von ScrollView implementieren, mit der Ihr Widget beigewiesen werden kann, dass das Scrolling nach Wunsch deaktiviert wird (sodass es nach genügend Bewegung nicht scrollen und Ereignisse von Ihrem Widget entnimmt). Die benutzerdefinierte ScrollView kann diese Methode überschreiben:

http://developer.android.com/reference/android/widget/scrollview.html#onIntercepttouchEnvent(android.view.motionevent)

Wenn Sie nicht möchten, dass die Basisklasse Berührungsereignisse für Scrolls verbraucht, geben Sie hier FALSE zurück, anstatt die Basisimplementierung aufzurufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top