Android 如何将事件从自定义线性布局发送到子视图

Android 如何将事件从自定义线性布局发送到子视图,android,gridview,android-linearlayout,multi-touch,Android,Gridview,Android Linearlayout,Multi Touch,我有一个自定义的linearlayout,其中有两个GridView。 我想在完整的线性布局上使用多点触控,即第一次触控可以在一个gridview中,第二次触控可以在另一个gridview中,线性布局应该能够为此获得多点触控事件(动作向下和动作向下)。我可以通过在自定义布局中覆盖onInterceptTouchEvent来实现这一点。 现在,如果需要,我还希望gridview能够独立滚动。尽管gridview是一个可滚动的视图,但它不能这样做,因为我截获了“down”事件。我看到,当我尝试滚动时

我有一个自定义的linearlayout,其中有两个GridView。 我想在完整的线性布局上使用多点触控,即第一次触控可以在一个gridview中,第二次触控可以在另一个gridview中,线性布局应该能够为此获得多点触控事件(动作向下和动作向下)。我可以通过在自定义布局中覆盖onInterceptTouchEvent来实现这一点。 现在,如果需要,我还希望gridview能够独立滚动。尽管gridview是一个可滚动的视图,但它不能这样做,因为我截获了“down”事件。我看到,当我尝试滚动时,会生成两个事件:“ACTION\u DOWN”和“ACTION\u MOVE”。 因为我需要多点触控用例的操作,所以我希望它也被发送到linearlayout

是否有可能将ACTION_DOWN事件发送到linearlayout和my child视图(在本例中为gridView)


需要帮助。

您不必截取操作
向下
,只需监视它是否流经您的容器视图。换句话说,您可以重写
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);
}
这允许您查看事件,而无需将其从子元素中移除