我有一个自定义linearlayout,其中我有两个gridviews。 我希望在完整的线性布局上进行多点触控,即第一次触摸可以在一个网格视图中,第二次触摸可以在另一个网格视图中,线性布局应该能够为此获得多点触控事件(ACTION_DOWN和ACTION_POINTER_DOWN)。我可以通过覆盖自定义布局中的onInterceptTouchEvent来实现此目的。 现在我还希望gridview在需要时独立滚动。虽然gridview是一个可滚动的视图,但它无法这样做,因为我已截获了' down'事件。我看到当我尝试滚动时会生成两个事件:' ACTION_DOWN'和' ACTION_MOVE'。 由于我需要ACTION_DOWN用于多点触控用例,我希望它也能被发送到linearlayout。
是否有可能将ACTION_DOWN事件发送到linearlayout以及我的子视图(在这种情况下是gridView)?
需要帮助。
答案 0 :(得分: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);
}
这使您可以在不将其从子元素中删除的情况下查看事件。