假设我有一个包含一些项目的列表 (RecyclerView
),当用户将手指放在其中一个项目上时,我需要显示一个完全不同的屏幕,并根据位置用户将手指从不同的屏幕上移开,我的应用程序会执行一些不同的操作。
我已经设法通过 Fragment
交易实现了一些目标(我将包含 RecyclerView
的 Fragment
替换为 Fragment
当我在列表的一个项目 View
中收到 ACTION_DOWN
MotionEvent
时包含那个不同的屏幕),但问题是第二个 Fragment
无法接收 ACTION_UP
或任何其他 MotionEvent
因为 ACTION_DOWN
从未在其上调度过,我需要一种方法来知道用户何时松开手指。
有什么方法可以实现我想要的行为(也许使用一些不同于替换 Fragments
的技术)?
最佳答案
当您在 View 的 onTouchEvent 中返回 true 时,它会完全控制其余的手势,直到并包括 ACTION_UP MotionEvent。
如果您从原始监听器获取 ACTION_UP 的坐标,然后将它们发送到您想要处理该信息的任何地方,它将执行您想要的操作。
另一种技术是在 ViewGroup 中覆盖 onInterceptTouchEvent()。这将使您能够在 View 项收到 ACTION_DOWN MotionEvent 后立即拦截事件。该手势的其余部分(包括 ACTION_UP)将被重定向到 View 组 onTouchEvent()。
关于android - 根据触摸事件更改 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632208/