ScrollView嵌套导致onTouch中的ACTION_UP丢失的问题解决

首先感谢@浅秋这篇文章(http://blog.csdn.net/hyp712/article/details/8777835#comments)让我简单的理解了onTouch事件的分发机制。

即使没有直接解决我的问题,但是也受到了一点启发。好,下面转入正题:

onTouch 中的ACTION_UP丢失的问题解决

问题出现:为了满足需求,在代码中使用了Scrollview,里面嵌套了一个HorizontalScrollView,需要对屏幕边缘来一个侧滑,所以必须要监听HorizontalScrollView的一个onTouch事件,后来发现,可以监听,但是与外层的ScrollView有冲突,出现了一个问题:

如果水平滑动的时候稍微有点倾斜,那么就直接调用了ScrollView的onTouch,不调用HorizontalScrollView的onTouch方法了,看了上面的文章,如果不希望把事件传到父控件,那么就在onTouch中返回true。但是对于我这种情况却是“然并卵”。

解决方案:

从上面的文章可以看出,其实onTouch事件并不只是ACTION_DOWN,ACTION_MOVE,ACTION_UP三种情况,还有其他的,上面文章还提到一个ACTION_CANCEL,最后尝试一下在在ACTION_CANCEL中执行打开菜单的代码!结果成功了!由此可得,这是当HorizontalScrollView的onTouch被取消的时候,失去监听的时候,就触发了这个ACTION_CANCEL事件!

结论:当HorizontalScrollView的onTouch被取消的时候,失去监听的时候,就触发了这个ACTION_CANCEL事件!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值