android触摸事件透传,Android中父View穿透子View响应长按事件
时间: 2023-09-11 18:07:22 浏览: 141
在Android中,触摸事件通常是从父View依次传递到子View的。如果你想让父View穿透子View响应长按事件,可以在父View中处理触摸事件,并在长按事件发生时返回true,告诉系统该事件已经被处理,不需要再传递给子View。具体实现可以参考以下代码:
```
public class MyViewGroup extends ViewGroup {
private GestureDetector mGestureDetector;
public MyViewGroup(Context context) {
super(context);
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public void onLongPress(MotionEvent e) {
// 处理长按事件
}
});
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// 在此方法中处理触摸事件
mGestureDetector.onTouchEvent(ev);
return super.onInterceptTouchEvent(ev);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// 子View的布局操作
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// 测量子View的大小
}
}
```
在onInterceptTouchEvent方法中,调用GestureDetector的onTouchEvent方法处理触摸事件,如果发生了长按事件,就在onLongPress方法中处理。最后返回super.onInterceptTouchEvent(ev)告诉系统该事件已经被处理过,不需要再传递给子View。这样就可以实现父View穿透子View响应长按事件的效果。
阅读全文