我们说我有一个列表(RecyclerView
)包含一些项目,当用户将手指放在其中一个项目上时,我需要显示一个完全不同的屏幕,并根据位置如果用户将手指从不同的屏幕上移开,我的应用程序会执行一些不同的操作。
我设法通过Fragment
次交易实现了某些目标(当我收到{{1}时,我将包含Fragment
的{{1}}替换为包含不同屏幕的RecyclerView
列表项Fragment
之一}中的{} {},但问题是第二个ACTION_DOWN
无法接收MotionEvent
或任何其他View
因为Fragment
从未在其上发送过,我需要一种方法来了解用户何时将其关闭。
有没有办法实现我想要的行为(可能采用与替换ACTION_UP
不同的技术)?
答案 0 :(得分:1)
当您在onTouchEvent中为视图返回true时,它会完全控制其余的手势,直到并包括ACTION_UP MotionEvent。
如果您从原始侦听器获取ACTION_UP的坐标,然后将它们发送到您想要处理该信息的任何位置,它将执行您想要的操作。
另一种技术是覆盖ViewGroup中的onInterceptTouchEvent()。这将使您能够在视图项收到ACTION_DOWN MotionEvent后立即拦截事件。然后,包括ACTION_UP在内的其余手势将被重定向到视图组onTouchEvent()。