gpt4 book ai didi

android - 在Android中将触摸事件传递给父 View 的onTouchListener

转载 作者:行者123 更新时间:2023-12-04 20:48:08 28 4
gpt4 key购买 nike

我有一个 ListView ,其项目是一个线性布局,它有一个按钮作为 subview 。我希望线性布局的 ontouchLIsener 能够工作。我不想使用 onInterceptTouchEvent .有没有办法可以将按钮的触摸表单传递给父 ListView 。我试过这个
- 从按钮的 onTouchListener 返回 true

private View.OnTouchListener buttonListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.i(TAG, "Button On Touch");
return true;
}
};

但这不起作用。它不会将触摸事件传递给线性布局的 onTouchListener .

必须有某种方式它应该工作。

最佳答案

View 组的事件链是这样工作的 - dispatchEvent叫做。然后dispatchEvent来电onInterceptTouchEvent .如果它返回 false,则将触摸事件传递给 ViewGroup 的子项。如果任何 child 消费事件(在这种情况下按钮消费事件),即如果他们返回true,那么motionevent不会传递给其他方法。由于按钮是可点击的,在这种情况下它返回 true。如果 onInterceptTouchEvent方法返回 true 则 subview 不会被赋予运动事件,而是 ViewGroup 的 onTouchListeneronTouch方法被调用。因此将触摸事件传递给父级( View 组)onTouchListener确保在 onInterceptTouchEvent 中返回 true父(ViewGroup)的方法。你 不要必须覆盖 onDispatchTouchEvent()

@Override
public boolean onInterceptTouchEvent(MotionEvent motionEvent) {

Log.i(TAG,"PARENT.onInterceptTouchEvent");

return true;
}

更多触摸导航是如何完成的,请查看 this stack post

关于android - 在Android中将触摸事件传递给父 View 的onTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25475714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com