Android中RecyclerView嵌套滑动冲突解决的代码片段
2016-12-12 11:38
796 查看
在纵向RecyclerView嵌套横向RecyclerView时,如果纵向RecyclerView有下拉刷新功能,那么内部的横向RecyclerView的横向滑动体验会很差.(只有纯横向滑动时,才能滑动内部的横向RecyclerView,否则滑动事件就会影响到下拉刷新),添加拦截判断.
public class MySwipeRefreshLayout extends SwipeRefreshLayout { private boolean mIsVpDragger; private final int mTouchSlop; private float startY; private float startX; public MySwipeRefreshLayout(Context context) { super(context); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); } public MySwipeRefreshLayout(Context context, AttributeSet attrs) { super(context, attrs); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: // 记录手指按下的位置 startY = ev.getY(); startX = ev.getX(); // 初始化标记 mIsVpDragger = false; break; case MotionEvent.ACTION_MOVE: // 如果viewpager正在拖拽中,那么不拦截它的事件,直接return false; if (mIsVpDragger) { return false; } // 获取当前手指位置 float endY = ev.getY(); float endX = ev.getX(); float distanceX = Math.abs(endX - startX); float distanceY = Math.abs(endY - startY); // 如果X轴位移大于Y轴位移,那么将事件交给viewPager处理。 if (distanceX > mTouchSlop && distanceX > distanceY) { mIsVpDragger = true; return false; } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: // 初始化标记 mIsVpDragger = false; break; } // 如果是Y轴位移大于X轴,事件交给swipeRefreshLayout处理。 return super.onInterceptTouchEvent(ev); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Android在RecyclerView中嵌套ScrollView,解决两者间的滑动冲突
- android ScrollView 嵌套RecyclerView 解决滑动冲突
- Android Listview嵌套viewpager 滑动冲突解决
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- 解决NestedScrollView中嵌套RecyclerView滑动冲突问题
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- Android嵌套滑动控件的冲突解决和ViewPager适配当前子控件高度不留空白的办法
- Android ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题解决方案
- NestedScrollView中嵌套ViewPager或RecyclerView出现滑动冲突的解决
- Android 解决ScrollView嵌套RecyclerView导致滑动不流畅的问题
- Android viewpager嵌套viewpager滑动冲突的解决
- 【Android 手势冲突】彻底解决RecyclerView与ScrollView滑动冲突问题,并实现RecyclerView悬停导航栏(附demo)
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- Android滑动冲突解决方式(下拉刷新上拉加载更多,适配RecyclerView/ListView/ScrollView)
- AndroidUI系列--在DecorView层解决RecyclerView和ScrollView的滑动冲突
- NestedScrollview 嵌套 RecyclerView出现滑动冲突解决方法
- Android Scrollview嵌套RecyclerView导致滑动卡顿问题解决
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法