将ontouchlistener传递给父母

时间:2014-02-19 14:36:24

标签: android

我的活动中有4个按钮,每个按钮都有一个onTouchListener。我想将该事件传递给按钮的父级,即线性布局。为了达到这个目的,我已经习惯了 这个:

button.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }

        public boolean onInterceptTouchEvent(MotionEvent ev)
        {
            onTouchEvent(ev);
            return true;
        }
    });

但它不起作用。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

OnTouchListener documentation表示onTouch()返回

  

如果监听器已经使用了该事件,则为true,否则为false。

因此,当您返回true时,您指示按钮的触摸侦听器消耗了该事件,并且偶数不会再传播。 返回false将使事件在视图层次结构中进一步传播。

但请注意,无条件不听触摸事件的按钮不是按钮。我会确定TextView是否还不够。


虽然对于简单的TextView(或任何View来说这是真的和充分的,但你应该注意到Button是一个可点击的视图,默认情况下就是这样。这意味着,无论您在onTouch()后返回什么内容,触摸事件都不会进一步传播,并且会调用Button的{​​{1}}方法。

要禁用此行为并使其按预期运行,只需将其设为不可点击:

onClick()

同样,使用按钮不再有意义了。