2013-09-25 59 views
0

我有一個自定義的線性佈局,其中有兩個gridviews。 我想要在完整的線性佈局上進行多點觸控,即第一次觸摸可以在一個gridview中,第二次觸摸可以在另一個gridview中,線性佈局應該能夠獲得多點觸控事件(ACTION_DOWN和ACTION_POINTER_DOWN)。我可以通過在我的自定義佈局中重寫onInterceptTouchEvent來獲取此信息。 現在我也希望gridview如果需要獨立滾動。雖然gridview是一個可滾動的視圖,但它不能這樣做,因爲我攔截了'down'事件。我看到,當我嘗試滾動兩個事件時產生:'ACTION_DOWN'和'ACTION_MOVE'。 因爲我需要ACTION_DOWN用於多點觸控用例,所以我希望它也被髮送到linearlayout。如何將事件從自定義線性佈局發送到子視圖

是否有可能將ACTION_DOWN事件發送到linearlayout以及我的子視圖,在這種情況下是gridView?

需要幫助。

回答

0

您不必攔截ACTION_DOWN只是爲了監測它是否流過您的容器視圖。換句話說,您可以覆蓋onInterceptTouchEvent()以在觸摸事件被框架傳遞給相應的子視圖之前監視觸摸事件,但只要您沒有使用返回值,就不會實際竊取後續觸摸事件網格元素。例如:

public boolean onInterceptTouchEvent (MotionEvent ev) 
    if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { 
     //Touchdown! 
    } 

    //Don't modify this and touch interaction will happen normally 
    return super.onInterceptTouchEvent(ev); 
} 

這可以讓您查看事件而不會將其從子元素中移除。

相關問題