0

我有一个自定义线性布局,其中有两个网格视图。我想在完整的线性布局上进行多点触控,即第一次触摸可以在一个网格视图中,第二次触摸可以在另一个网格视图中,并且线性布局应该能够为此获得多点触控事件(ACTION_DOWN 和 ACTION_POINTER_DOWN)。我可以通过在我的自定义布局中覆盖 onInterceptTouchEvent 来实现这一点。现在,如果需要,我还希望 gridview 独立滚动。虽然 gridview 是一个可滚动的视图,但它不能这样做,因为我已经截获了 'down' 事件。我看到当我尝试滚动时会生成两个事件:“ACTION_DOWN”和“ACTION_MOVE”。由于我需要 ACTION_DOWN 用于多点触控用例,我希望它也被发送到线性布局。

是否有可能将 ACTION_DOWN 事件发送到线性布局以及我的子视图(在这种情况下是 gridView)?

需要帮忙。

4

1 回答 1

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);
}

这使您可以在不将其从子元素中移除的情况下查看事件。

于 2013-09-25T05:11:32.907 回答