ScrollView ViewPager RecycleView 嵌套 滑动冲突 整理 解决方案

本文探讨了滑动冲突的三种常见情况及其产生原因,并提供了多种解决方案,包括方向不同和相同的情况,以及复杂的嵌套布局处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前一段时间有人问关于滑动冲突的问题,所以参照网络一些文章抽时间做了一下整理。

滑动冲突
三种会出现滑动冲突根本情况:
1方向不同(Scrollview里嵌套viewpager)
2方向相同(Scrollview里嵌套recycle,Viewpager里嵌套viewpager)
3前两种的嵌套(例:Scrollview里viewpager里recycle)

问题产生原因:
同一触摸事件 在 同一时刻 只能有一个view或viewgroup 进行消费
解决方案:
控制让 触摸事件在某一时刻时间 由应该执行的那个view或viewgroup 执行消费(这一时刻由这个,那一时刻由那个)。


方向不同的两种方法:
1外部:
重写父view。如onInterceptTouchEvent,如果是父view需要的方向在滑动,就拦截,如果不是就不拦截。如ondispathTouchEvent,如果父viw需要就不分发,不如要就分发。如Scrollview里嵌套viewpager,在Scrollview中不分发或拦截上下方向。
2内部:
重新子view,如果需要就在ondispathTouchEvent请求父view不拦截,getParnt().requestDisallowInterceptTouchEvent(true);


方向相同的方法:
1viewpager与viewpager的嵌套,一般重写子viewpager,在ondispath里根据父viewpager是第几页和子view第几页的条件按需求判断是否子viewpager是否需要滑动,需要的话就请求父viewpager不拦截
2scrollview嵌套recycle,出现的问题较多,如:recycle显示不完全安卓6.0以上的问题(重写recycle的layoutmanager或在recycle外嵌套一个relative,都有效但是有的机型无效),滑动冲突(设置按照Scrollview的滑动recyclerView.setNestedScrollingEnabled(false);),嵌套布局,不显示顶部布局控件,直接显示下面recycle的第一个item(设置滑动到顶部scrollto),scrollview下嵌套布局有时会什么也消失不出来,加入fillViewport,没有此属性时Scrollview下的view会按照wrap_content计算。使用desgin库的NestedScrollview来嵌套recycle,直接就不用要处理了。
3scrollview嵌套scrollview,同理与viewpager与viewpager的嵌套。都是根据需求,来请求不拦截的。

前两种的嵌套解决方法:

有空写吧

touch分发机制
https://www.jianshu.com/p/e99b5e8bd67b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值