gpt4 book ai didi

android - RecyclerView : dispatchTouchEvent vs onTouchEvent 内的可滚动 MapView

转载 作者:行者123 更新时间:2023-11-30 00:34:45 24 4
gpt4 key购买 nike

我试图在 RecyclerView 中设置一个滚动的 MapView,因此我设置了 requestDisallowInterceptTouchEvent() TouchEvent 之前和之后。

奇怪的是:如果我在 dispatchTouchEvent() 中设置它,它确实有效方法,但如果我在 onTouchEvent() 中做同样的事情,它就不起作用了方法。

有人可以解释为什么我不能在 onTouchEvent() 中设置这个吗? ?

工作:

public class WorkingScrollableListItemMapView extends MapView {

// constructors

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
// Stop parents from handling the touch
this.getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
// Allow parents from handling the touch
this.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.dispatchTouchEvent(ev);
}
}

不工作:

public class NotWorkingScrollableListItemMapView extends MapView {

// constructors

@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_UP:
// Allow parents from handling the touch
this.getParent().requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_DOWN:
// Stop parents from handling the touch
this.getParent().requestDisallowInterceptTouchEvent(true);
break;
}
return super.onTouchEvent(ev);
}
}

最佳答案

处理事件的调用顺序大致如下:onInterceptTouchEvent、onDispatchTouchEvent、dispatchTouchEvent、onTouchEvent。对我来说,这表明 onTouchEvent 是处理事件的最后一步。在最后一步操纵在哪里和谁处理事件为时已晚。如果您查看早期处理事件的方法,源代码会说什么?

关于android - RecyclerView : dispatchTouchEvent vs onTouchEvent 内的可滚动 MapView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43608941/

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