2012-03-13 83 views
2

我開發了擴展ViewGroup的自定義佈局。現在,我想在一個活動中使用它。在我的活動中,我在佈局佈局中都有這個佈局和一個viewpager。我的自定義佈局填充我的框架佈局,並在我的viewPager之上。將觸摸事件調度到同級視圖

我希望能夠處理自定義佈局上的點擊事件,並讓所有其他運動進入viewpager,以便它仍然可以滾動。

我還沒有管理到目前爲止。要麼我點擊了,但viewpager無法再滾動,或者相反。我已經覆蓋onTouchEvent和onInterceptTouchEvent。

我注意到的是,我正確地收到了我的自定義佈局的向下事件,但一旦它被viewpager捕獲,我永遠不會在那裏起牀。我如何才能在觸摸事件的兄弟視圖之間進行通信?

PS:我已經試過splitMotionEvent無濟於事

回答

2

確保無論是onTouchEvent或您的自定義佈局的dispatchTouchEventACTION_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; 
    } 
}); 
相關問題