1

Ich entwickle eine App, die genau wie das Bild unten mehrere Fragmente enthält:Android OnTouchEvent und Onclick-Ereignis

Picture 1

Die Ansicht von unten ist MainActivity, und es gibt mehrere Fragmente über MainActivity, welche enthalten Tasten. Ich möchte ein Fragment oben hinzufügen, um die OnTouchEvents (Gesten) zu hören, aber die onclick Ereignisse ignorieren und die onclick Ereignisse zu den Fragmenten weiterleiten.

Hier sind meine Fragen,

  1. Wie kann ich unterscheiden onTouchEvent und onclick Ereignisse in meinem Code?
  2. Wie kann ich die onclick Ereignisse an die folgenden Fragmente übergeben?
    Ich sah einige Leute vorgeschlagen, zu verwenden, aber ich bin mir nicht sicher, ob dies für meinen Fall gilt und ich nicht wirklich verstehe, wie man verwendet.

Update:
Ich versuchte boolean dispatchTouchEvent(MotionEvent ev) außer Kraft zu setzen, um das Top-Fragment, das das Click-Ereignis ignorieren zu machen, aber da das erste Berührungsereignis MotionEvent.ACTION_DOWN sein muss, scheint es, dass es keine Möglichkeit für mich zu Bestimmen Sie, ob das Berührungsereignis ein Klick ist.

Gibt es einen anderen Weg, dies zu tun?

Antwort

0

Vom Documentation

Die onInterceptTouchEvent() -Methode aufgerufen wird, wenn ein Berührungsereignis auf der Oberfläche eines Viewgroup erfasst wird, auch auf der Oberfläche seiner Kinder. Wenn onInterceptTouchEvent() den Wert true zurückgibt, wird das MotionEvent abgefangen. Dies bedeutet, dass es nicht an das untergeordnete Element, sondern an die onTouchEvent() - Methode des übergeordneten Elements übergeben wird.

Die onInterceptTouchEvent() -Methode gibt einem übergeordneten Element die Möglichkeit, ein Berührungsereignis vor den untergeordneten Elementen zu sehen. Wenn Sie true von onInterceptTouchEvent() zurückgeben, erhält die untergeordnete Ansicht, die zuvor Touch-Ereignisse behandelt hat, eine ACTION_CANCEL, und die Ereignisse ab diesem Zeitpunkt werden an die onTouchEvent() - Methode des Parents zur üblichen Behandlung gesendet. onInterceptTouchEvent() kann auch false zurückgeben und Ereignisse einfach ausspionieren, während sie die Ansichtshierarchie zu ihren üblichen Zielen durchlaufen, die die Ereignisse mit ihrem eigenen onTouchEvent() behandeln.

Also müssen Sie wahr/falsch (in onInterceptTouchEvent-Methode) entsprechend Ihrer Anwendungsflusslogik zurückgeben. Wenn Sie den OnTouchListener verwenden, können Sie die Verwendung von OnClickListener vermeiden. Siehe Beispiel in der Dokumentation, um es besser zu verstehen.

0

This werden Sie die Idee, wie onTouch und onClick sind unterschiedlich. Sie können benutzerdefinierte Schnittstellen verwenden, um Daten zur Bearbeitung an ein niedrigeres Fragment zu übergeben

Verwandte Themen