我的活动中有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;
}
});
但它不起作用。可能是什么问题?
答案 0 :(得分:1)
OnTouchListener documentation表示onTouch()
返回
如果监听器已经使用了该事件,则为true,否则为false。
因此,当您返回true
时,您指示按钮的触摸侦听器消耗了该事件,并且偶数不会再传播。
返回false
将使事件在视图层次结构中进一步传播。
但请注意,无条件不听触摸事件的按钮不是按钮。我会确定TextView
是否还不够。
虽然对于简单的TextView
(或任何View
来说这是真的和充分的,但你应该注意到Button
是一个可点击的视图,默认情况下就是这样。这意味着,无论您在onTouch()
后返回什么内容,触摸事件都不会进一步传播,并且会调用Button
的{{1}}方法。
要禁用此行为并使其按预期运行,只需将其设为不可点击:
onClick()
同样,使用按钮不再有意义了。