Android:在RelativeLayout的onTouchEvent中看不到ACTION_MOVE/UP

2024-02-05

我注册了一个相对布局的监听器,见下文。我想添加一些自定义事件处理,

mOnTouchListener = new OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            final int action = motionEvent.getAction();
            boolean ret = false;

            switch (action) {
            case MotionEvent.ACTION_DOWN:
                ret = doSth(motionEvent);
                break;
            case MotionEvent.ACTION_MOVE:
                ret = doSth(motionEvent);
                break;
            case MotionEvent.ACTION_UP:
                ret = doSth(motionEvent);
                break;
            }

            return ret;     // returning false got me none of MOVE/UP events right here
        }
    };

但是,除非返回 true,否则我无法获得任何 MOVE/UP 事件。

另一次尝试,我向 CheckBox 注册了相同的侦听器,一切都很顺利。
ViewGroup 和 Widget 有区别吗?设计目的?


“但是,除非返回 true,否则我无法获得任何 MOVE/UP 事件。”

你已经回答了你自己的问题。如果你不回来true表明您关心并正在处理该事件,系统不会向您发送后续事件,因为您已经告诉系统您不关心它。如果需要监听触摸事件的整个生命周期,则需要返回true always.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:在RelativeLayout的onTouchEvent中看不到ACTION_MOVE/UP 的相关文章