2014-09-19 63 views
0

我有一個ViewPager可以包含兩種類型的視圖。其中一種視圖類型具有按鈕,其中一種視圖類型不具有按鈕。無按鈕視圖類型必須在onTouchEvent中捕捉觸摸以平移和縮放圖像。但我想讓點擊泡到ViewPager(它有一個clickListener附加到)我該如何讓點擊泡到onTouchEvent

我必須在視圖的onTouchEvent ACTION_DOWN中返回true,否則它將不會看到未來的事件。

我不能使用在ViewPager onInterceptTouchEvent()來捕獲點擊次數,因爲一個視圖確實有按鈕和這些按鈕需要他們點擊

因此,如何能我看來陷阱揮筆,讓點擊泡沫嗎?

回答

0

嘗試使用此ViewGroup.onInterceptTouchEvent(MotionEvent)。這允許一個ViewGroup中觀看的事件,因爲他們被分派到孩子Views`

+0

正如問題中提到的,我不能這樣做。但感謝您抽出時間:) – MikeWallaceDev 2014-09-19 15:51:22

+0

嘗試使用接口並實現它們。 – Panther 2014-09-19 15:53:17

0

適當的方式可能是由onInterceptTouchEvent返回true攔截只是想攔截事件,僅在需要時。

但是如果你想與黑暗的一面走,有一個骯髒的選擇,可能會引誘你,你可能會後悔:攔截所有的事件,然後如果需要的話把它們傳遞下去。

例如有你的觀點有點像

 public boolean canInterceptTouch(MotionEvent ev) { 
     // return true if you are interested in this touch event, e.g. it falls into 
     // a clickable area 
} 

和一些處理您viewpager裏面像

public void interceptTouch(MotionEvent ev) { 
     // here you react to the event 
} 

觸摸事件裏面你有

@Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 

     return true; 
    } 

吩視圖尋呼機將處理的事件骯髒的方式是這樣的:

@Override 
    public boolean onTouchEvent(MotionEvent ev) { 

    if (yourView.canInterceptTouch(ev))) { 
      yourView.interceptTouch(ev); 
      return true; 
    } else { 
     return doSomethingElse(); 
    } 
} 

注意:儘管我已經做了類似的事情,並且體面的結果,但我不建議將它作爲解決方案,除非您在處理運動事件時擁有非常簡單的邏輯,否則會變得一團糟。如果你現在花一些時間來正確地做,你未來的自我會更開心。

編輯:代碼還沒有經過測試,只是爲了讓你知道你需要什麼。對不起,任何錯字。

+1

我熱愛未來,永遠不會故意做一些讓他煩惱的事情。但我認爲你給了我一個暗示......我是這樣做的。我應該攔截我想要的一切,並讓點擊通過。不,該死,只有ViewGroup有一個onIntercept。不好。 – MikeWallaceDev 2014-09-19 16:18:29

+0

讓我們這樣說吧。 onitercepttouch在這裏接收事件。如果你返回false,他們會繼續傳遞,但會被髮送到子視圖。如果您返回true,則事件將轉到viewpager ontouchevent。 我不得不幾次閱讀http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent) 上的文檔,以瞭解它應該如何工作,以及在此期間,我已經在黑暗的一面... – 2014-09-19 16:29:45

+0

好吧,現在我坐在我的辦公桌前,可以看到更好的...這實際上是我拿出來:) 我寧願容器不需要了解細節,以便我可以在其他地方重新使用該視圖。 – MikeWallaceDev 2014-09-19 23:01:00

相關問題