处理拦截触摸事件而不扩展ViewGroup

Run*_*ion 27 android ontouchlistener touch-event

我有一个RelativeLayout,这个布局有近10个视图.

我已经设置OnTouchListener了这个布局并在其中做了一些工作并返回true.

当我触摸没有View的布局(空区域的意思)时,这个监听器工作正常.如果我触摸此布局的子视图,则此侦听器不会触发...

从文档中,我了解到我们可以onInterceptTouchEvent()通过扩展ViewGroup 来覆盖(所以这里是RelativeLayout)并在子视图消耗此事件之前处理触摸事件...

这将做一个技巧,但我需要通过将RelativeLayout替换为CustomRelativeLayout来修改我需要此功能的许多xml文件.

所以我的问题是:

有没有办法RelativeLayoutRelativeLayout消费事件中的子视图之前处理(ofcourse ViewGroup)的触摸事件?我不想延长RelativeLayout......

Mic*_*kov 21

试着覆盖

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    return super.dispatchTouchEvent(ev);
}
Run Code Online (Sandbox Code Playgroud)

Activity.此方法是第一个处理触摸事件的方法.但在这种情况下,您需要使用当前的视图坐标


kri*_*4an 1

尝试将onTouchListener添加到RelativeLayout

RelativeLayout rl = (RelativeLayout) findViewById( R.id.relativeLauout );
    rl.setOnTouchListener( new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // do something
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)

或使用 Activity 中的 onTouchEvent 方法

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)