android - 根据触摸事件更改 View

标签 android android-fragments android-recyclerview touch-event motionevent

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

我已经设法通过 Fragment 交易实现了一些目标(我将包含 RecyclerViewFragment 替换为 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/

相关文章:

android - 如何在布局xml中添加recyclerview

android - 具有玩家标准的快速游戏 - 实时多人 Android 谷歌播放服务

android - 使用 atiout 库在 Android 中发送 AT 命令

android - ScrollView 布局没有填满整个屏幕

java - 从另一个 fragment 访问时静态 int 数组元素变为 0

java - 使用 RecyclerView 切换选项卡

android - Android 中的 requestLocationUpdates 间隔

android - 在 xml 内的图像上绘制 View

android - 如何动态更新fragment View

java - 从另一个 Fragment 获取值,然后将 Items 添加到自定义 recyclerview