Frage

Eigentlich versuche ich eine ontouchlistener in mein Android (1.5) Anwendung zu implementieren. Daher implementiert i die „ontouchlistener“ in die Klasse, und dann habe ich meinen Code in dem:

public boolean onTouchEvent (MotionEvent e){
 //code
}

Das Problem ist, dass wenn ich eine bin ziehen über (z) Spinner oder EditTextView als diese Methode wird nicht aufgerufen. Der einzige Weg, dies zu lösen, die ich herausgefunden ist eine ontouchlistener zu jedem dieser Ansichten manuell hinzuzufügen:

((Spinner)(findViewById(R.id.spinner1))).setOnTouchListener(tl);
((Spinner)(findViewById(R.id.spinner2))).setOnTouchListener(tl);

(tl ist die ontouchlistener) So gibt es nicht einen Weg, um das Berührungsereignis zu fangen, bevor es zu jedem dieser Ansichten bekommt? Vielen Dank im Voraus

Ripei

War es hilfreich?

Lösung

Was genau tun Sie tun wollen - wollen Sie:

  • Detect ganze Gesten in einigen Activity.
  • Detect berührt nur für einen bestimmten View

Wenn Sie die ehemalige wollen:

Werfen Sie einen Blick auf dieses Beispiel: Fling Gestenerkennung auf Raster-Layout .

Im Grunde leiten Sie alle registrierten Touch-Ereignisse zu einem GestureDetector. Es versteht, was genau ist die Benutzereingabe (einfaches Tippen, doppeltes Tippen, blättern, etc.) und ruft den entsprechenden Rückruf in einem SimpleOnGestureListener, die Sie implementieren sollen.

Wenn Sie die letztere wollen:

Sie können entweder:

  1. die onTouchEvent() anzeigen außer Kraft setzen.
  2. Implementieren und Haken onTouchListener (wenn Sie den Kontakt aufnehmen möchten, bevor es es versendet wird).

Wenn Sie onTouchListener implementieren möchten, müssen Sie Ihre Arbeit nicht in der onTouchEvent() Methode, aber in der Schnittstelle des onTouch() Methode tun.

Ich hoffe, das hilft.

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