我在这里发布了一个类似的问题:Detect touch event on a view when dragged over from other view。但与我想要的相比,这个问题有不同的行为。
如果我有多个视图,我按一个并继续将我的手指拖到其他多个视图上,有没有办法让其他视图通知他们已被触摸?它不仅仅是2个视图,它可能是多个视图。我点击一个并继续拖动我的手指并浏览多个其他视图。
视图是动态制作的,并以编程方式添加到FrameLayout,并通过在其周围添加边距以编程方式定位。
答案 0 :(得分:0)
我无法通过实际的自定义视图找到实现此目的的方法,并且必须返回一层。
视图的位置记录在包含每个视图的FrameLayout上。
在FrameLayout中,我最终覆盖了onTouchEvent
。
我最终不得不做类似的事情:
@Override
public boolean onTouchEvent(MotionEvent event) {
float xCoord = event.getX();
float yCoord = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Using X and Y coordinates, find out if touch event is on top of a view.
// Mark the view as touched
return true;
case MotionEvent.ACTION_UP:
// Action required once touch released.
return true;
default:
// When dragging, the default case will be called.
// Using X and Y coordinates, figure out if finger goes over a view.
// If you don't want same behaviour when going back to previous view,
// then mark it so you can ignore it if user goes back to previous view.
}
}
调用case MotionEvent.ACTION_UP
后,您可以使用标记视图的事实来了解触摸了哪些视图。如果需要,您也可以在标记时将视图放入数组中来获取订单。