問題は、タッチイベントが親に設定されているとスクロールがインターセプトされることlayout
です。onTouch
巻物を入れたままイベントを継続することはできますScrollView
か?
1 に答える
これは非常にトリッキーな部分です。次のオーバーライドされたメソッドがありますActivity
。public boolean onTouchEvent(MotionEvent event)
これは、画面全体のすべてのタッチ イベントを解釈する一般的な方法です。そして、「わかりました。これを実装できます。準備万端です..」と言うことができます。そして、ここで Android がどのように機能するかという難しい部分が来ます。
ご存知のように、カスタム実装を追加するために実装できるView
独自のメソッドがあります。onTouchEvent()
では、どのメソッドがリッスンするのでしょうか? ScrollView
またはActivity
?_ これらのタッチ イベントは、「内側」の要素から「外側」の要素に移動するようです。つまり親子関係。
考慮すべきもう 1 つの点は、onTouchEvent メソッドがブール値を返すことです。このブーリアン パラメータは、タッチ イベントを 1 レベル上げるか、現在の で処理するかを決定しますView
。つまりCustomViewA
、onTouchEvent() をCustomViewB
実装し、独自のタッチ イベントを実装する があり、A が B の子である場合、タッチ イベントは最初に A を通過し、処理されない場合は B に移動します。
したがって、基本的にはい、それは可能です。やりたいタッチイベントによって異なります。
したがって、私たちの場合、タッチ イベントが水平の場合にScrollView
戻ります。true
アクティビティのタッチ イベントは、ScrollView
タッチ イベントがそれ自体で処理されない場合にのみ処理されます。それ以外の場合は、スクロール ビューの on touch イベントをオーバーライドして実装する必要があり、場合によっては、レイアウト全体で実装するために false を返す必要があります。最後の部分で頑張ってください。フリング効果の実装を開始しましたが、いくつかの問題が発生したため、スクロール ビューを使用した 2 本指の移動を実装しました。これは魅力のように機能します。
これは約 1 週間の調査と実験であり、私が思いついたことの概要です。他に何か見つけたら教えてください。それが役に立ったことを願っています。