2012-03-13 12 views
2

私はViewGroupを拡張するカスタムレイアウトを開発しました。さて、私はそれをアクティビティで使いたいと思っています。私の活動では、このレイアウトとビューページャの両方をframelayout内に持っています。私のカスタムレイアウトはフレームレイアウトを満たし、私のviewPagerの上にあります。タッチイベントを兄弟ビューに送信

カスタムレイアウトでクリックイベントを処理し、他のすべてのモーションをビューページに移動してスクロールできるようにしたいと考えています。

これまで管理していません。いずれかのクリックがありますが、ビューページはもうスクロールできません。 onTouchEventとonInterceptTouchEventをオーバーライドしました。

私が気づくのは、自分のカスタムレイアウトでダウンイベントが正しく受信されていますが、一度ビューパイタでキャッチされると、私は決して上に出ません。タッチイベントの兄弟ビュー間で通信を行うにはどうすればよいですか?

PS:私はあなたのカスタムレイアウトのonTouchEventまたはdispatchTouchEventのいずれかを確認して、無駄

答えて

2

にsplitMotionEventを試してみましたがACTION_DOWNでtrueを返す起こり、その後、カスタムレイアウトは、後にACTION_MOVEACTION_UPを受け取るだろう。

0

私は、タップを追跡している場所で同じ問題を抱えており、OnTouchClickListenerを使用してスワイプしました。

私は、親とビュー自体にタッチを送信して今後のイベントを無視して解決しました(兄弟のタッチ/クリックが呼び出されるように)。イベントを無視しない場合は、それを消費します。

コードは次のようになります。

touchTrackingView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // do not consume this event so the sibling gets the touch/click 
     if (mIgnoreNextTouchEvent) { 
      mIgnoreNextTouchEvent = false; 
      return false; 
     } 
     // TODO do what you need to do with the touch 

     // next touch should be ignored so that 
     // the sibling gets their touch/click invoked 
     mIgnoreNextTouchEvent = true; 
     ((View) v.getParent()).dispatchTouchEvent(event); 
     return true; 
    } 
});