問題は、タッチイベントが親に設定されているとスクロールがインターセプトされること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 週間の調査と実験であり、私が思いついたことの概要です。他に何か見つけたら教えてください。それが役に立ったことを願っています。