[英]How to send event from custom linear layout to child view
我有一个自定义的linearlayout,其中有两个gridview。 我希望在完整的linearlayout上具有多点触摸,即,第一次触摸可以在一个gridview中,第二次触摸可以在另一个gridview中,并且线性布局应该能够为此获得多点触摸事件(ACTION_DOWN和ACTION_POINTER_DOWN)。 我可以通过在自定义布局中覆盖onInterceptTouchEvent来获得此功能。 现在,如果需要,我还希望gridview独立滚动。 尽管gridview是可滚动的视图,但它不能这样做,因为我已经拦截了'down'事件。 我看到当我尝试滚动时会生成两个事件:“ ACTION_DOWN”和“ ACTION_MOVE”。 由于多点触控用例需要ACTION_DOWN,因此我也希望将其发送到linearlayout。
是否可以将ACTION_DOWN事件发送到linearlayout以及我的子视图(在这种情况下为gridView)?
需要帮忙。
您不必拦截 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);
}
这样一来,您无需离开子元素即可看到事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.