0

我的应用正在做一个在 RecyclerView 上使用TouchImageView的画廊。

我试图使用这个类在带有 PageSnapHelper 的 RecyclerView 中显示多个全屏图像

这很好用,但是缩放使用起来很尴尬。如果我尝试捏缩放,图像会左右移动但不会缩放。只有双击有效。

我认为与 PageSnapHelper 附加的 RecyclerView 的滑动和滚动存在冲突。

如何使 TouchImageView 触摸事件覆盖 PageSnapHelper 事件时捏缩放通过滑动也适用于滑动时?

简单地说,我想要聊天应用程序(Whatsapp 和电报)图像滑块的相同行为,它支持滑动和捏缩放

请注意,我搜索了 stackoverflow,但只有 ViewPagers 的解决方案,但没有 recyclerview

4

1 回答 1

0

我不确定你在这里问什么,但如果我做对了,问题是你不能捏缩放,因为 RecyclerView 将你的捏动作识别为滑动。如果你愿意,你总是可以通过调用来禁止 RecyclerView 拦截触摸事件(并自己处理事件):

view.parent.requestDisallowInterceptTouchEvent(true)

在 PrivateOnTouchListener 的 onTouch 方法中。

如果您想要一个更简单的解决方案,您还可以检查当前视图是否已缩放,或者是否至少有 2 个手指正在触摸该视图。如果是,则不允许父级拦截触摸事件。PrivateOnTouchListener 代码内部将如下所示:

     if (isZoomed || event.pointerCount >= 2) {
        v.parent.requestDisallowInterceptTouchEvent(true)
     }

如果视图未缩放并且只有一根手指正在触摸视图,则现在仅允许父级拦截触摸事件。

于 2019-08-23T07:30:27.673 回答