Android 笔记 ViewPager的滑动与子view内部滑动事件的冲突问题

当自定义的可滑动View如PhotoView与ViewPager结合时,会出现滑动冲突,导致无法在子View内滑动。为解决此问题,可以自定义ViewPager或在子View中设置不拦截触摸事件。通过在子View合适位置设置`requestDisallowInterceptTouchEvent(true)`,允许子View获取触摸事件,实现自由横向滑动。但需要注意,禁止父View传递事件后,子View将无法接收UP事件,只能捕获Cancel事件。
摘要由CSDN通过智能技术生成

ViewPager 与子view的滑动冲突

在上一次笔记中建设了一个可以滑动的photoView,显示图片,可以放大,滑动

大部分时候这个自定义View会和ViewPager一起使用。也就是我们通常看到的相册里面的效果,滑动可以显示不同的图片。而在单页中,很多时候也需要滑动。这时候会和ViewPager产生冲突。

最后的结果就是,横向滑动并不会滑动子view里面的内容,而是切换ViewPager的页面。

那么如何才能禁止切换页面,而是只滑动子View呢。

1,可以自定义ViewPager,然后覆盖里面的一个方法canScroll()
answer on stackoverflow

2,一般情况我们是自定义一个View,并且希望这个View能够更加简单自由的使用,不需要被安装到viewpager的时候需要特别的设置,那么就需要在这个自定义View里面来确定让父View(不管是什么)不要拦截onTouch操作
那么,可以在子View的合适地方这样设置
getParent().requestDisallowInterceptTouchEvent(true)
这样,就不会拦截触摸操作,子View就可以获得触摸事件

比如PhotoView里面,如果横向可以滑动,并且没有滑动到边缘的时候,就设置一个这个,那么就可以自由横向滑动。如果滑动到横向边缘了,就设置成fal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值