对于同一个问题,我看了一些不同的回答,所以我不知道哪个是对的,然后我决定再问一遍。请尽量不要引用此答案中的任何其他链接。如果您想这样做,我会期待一些额外的解释。
我的问题是:
我在 ViewPager
中有一个 ImageView
,我的 ImageView
有一些手势检测(缩放和平移),我使用默认的 ViewPager
,默认情况下具有滑动检测。
onTouch 事件链是如何工作的?我层次结构中的最低 View 将始终获得 onTouch,如果该方法返回 false,父级会处理它吗?也许恰恰相反?
我问的是,因为我有一个 ImageView
,它有左右手势,当我到达图像的边缘时,我必须向父级发送一个事件(a ViewPager
) 来处理分页事件。任何关于如何做的进一步提示,我们将不胜感激。
最佳答案
因此,我已经以比 onInterceptTouchEvent 更好的方式管理 ViewPager 的 subview 中的多次触摸,我这么说是因为在我的情况下,为了知道我是否必须滚动 subview 而不是 Pager,我需要起点和终点之间的距离,我不想保存这些变量并在之后计算增量。
无论如何,在查看 ViewPager 的源代码之后,我发现有一个非常好的方法我应该为此实现。 这是我的实现:
@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
if (v instanceof ImageViewTouch) {
return ((ImageViewTouch) v).canScroll(dx);
} else {
return super.canScroll(v, checkV, dx, x, y);
}
}
关于安卓 setOnTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196781/