列表可以上下滚动里面的子View可以在整个屏幕拖动
1.自定义一个LayoutManager 继承 LinearLayoutManager 重写canScrollHorizontally 和 canScrollVertically方法
![](https://img.haomeiwen.com/i15659974/ad3eb5ebc71889ba.png)
2.在adapter给item添加OnTouch 监听
![](https://img.haomeiwen.com/i15659974/da8d0f57b98a7cdd.png)
3.实现监听然后再ACTION_DOWN自定义一个长按事件 将layoutManager 的isScrollEnabled置为false
![](https://img.haomeiwen.com/i15659974/2d989a0c7fde65dd.png)
![](https://img.haomeiwen.com/i15659974/5796ea8dccac7efd.png)
![](https://img.haomeiwen.com/i15659974/3cc044b14188144b.png)
4.在ACTION_UP移除消息和将layoutManager 的isScrollEnabled置为true
![](https://img.haomeiwen.com/i15659974/510938872dfd49fa.png)
这样会存在一个问题列表滚动会出现卡顿现象解决方法recyclerView添加一个scroll监听在监听中移除消息
![](https://img.haomeiwen.com/i15659974/4e77e41da942dd90.png)
最终效果
![](https://img.haomeiwen.com/i15659974/499c606934ae82c0.gif)
demo地址 https://github.com/xd1997/recyclerViewDragDemo
如果有更好的方案欢迎大家指教。
网友评论