根据触摸事件更改视图

时间:2016-06-04 15:53:53

标签: android android-fragments android-recyclerview ontouchevent motionevent

我们说我有一个列表(RecyclerView)包含一些项目,当用户将手指放在其中一个项目上时,我需要显示一个完全不同的屏幕,并根据位置如果用户将手指从不同的屏幕上移开,我的应用程序会执行一些不同的操作。

我设法通过Fragment次交易实现了某些目标(当我收到{{1}时,我将包含Fragment的{​​{1}}替换为包含不同屏幕的RecyclerView列表项Fragment之一}中的{} {},但问题是第二个ACTION_DOWN无法接收MotionEvent或任何其他View因为Fragment从未在其上发送过,我需要一种方法来了解用户何时将其关闭。

有没有办法实现我想要的行为(可能采用与替换ACTION_UP不同的技术)?

1 个答案:

答案 0 :(得分:1)

当您在onTouchEvent中为视图返回true时,它会完全控制其余的手势,直到并包括ACTION_UP MotionEvent。

如果您从原始侦听器获取ACTION_UP的坐标,然后将它们发送到您想要处理该信息的任何位置,它将执行您想要的操作。

另一种技术是覆盖ViewGroup中的onInterceptTouchEvent()。这将使您能够在视图项收到ACTION_DOWN MotionEvent后立即拦截事件。然后,包括ACTION_UP在内的其余手势将被重定向到视图组onTouchEvent()。