在list上手势滑动时,怎么不执行点击item的事件?

ameyume
博客专家认证
2011-01-09 12:56:40
实现了再listitem上的手势滑动效果,但是有时候会继续执行点击item的动作,怎么才能不执行点击item的动作呢 ,只执行滑动。
需要在哪个地方判断是执行了滑动,返回true,不让消息继续执行点击或touch?
还是显示执行的点击或touch才执行的滑动?
...全文
223 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyy025025025 2011-01-09
  • 打赏
  • 举报
回复
看一下调用gesturedetectorlistener的地方,如果它返回值是true的话,那么就不要再让ontouch处理UP的消息了。也就是说处理key up的地方直接返回true,而不需要调用super.onTouchEvent的方法。

因为onclick是通过key down和key up的组合来判断是否有点击,截取其中任何一个都可以屏蔽掉click的消息。
这个消息是通过onTouchEvent传递下去的,与gesturedetector是属于平级的关系。

另外如果说setOnItemClickListener执行了,那么gesturedetector的onSingleTapUp也应该执行了,可能是这边返回了false,导致进入了setOnItemClickListener。
ameyume 2011-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yyy025025025 的回复:]
看一下调用gesturedetectorlistener的地方,如果它返回值是true的话,那么就不要再让ontouch处理UP的消息了。也就是说处理key up的地方直接返回true,而不需要调用super.onTouchEvent的方法。

因为onclick是通过key down和key up的组合来判断是否有点击,截取其中任何一个都可以屏蔽掉click的消息。
这个消息是通过onTo……
[/Quote]
多谢
通过在dispatchTouchEvent函数中增加判断就可以,如果detector.onTouchEvent(ev)返回true就让此函数返回true,不再执行分发消息super.dispatchTouchEvent(ev)操作就ok了。
ameyume 2011-01-09
  • 打赏
  • 举报
回复
看log是先执行的手势onFling才执行list的setOnItemClickListener。
但在onFling中返回true也不管用,还是继续执行那个click。

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧