Android中RecyclerView嵌套滑动冲突解决的代码片段

Android中RecyclerView嵌套滑动冲突解决的代码片段,第1张

概述在纵向RecyclerView嵌套横向RecyclerView时,如果纵向RecyclerView有下拉刷新功能,那么内部的横向RecyclerView的横向滑动体验会很差.(只有纯横向滑动时,才能滑动内部的横向RecyclerView,否则滑动事件就会影响到下拉刷

在纵向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嵌套滑动冲突解决代码片段全部内容,希望文章能够帮你解决Android中RecyclerView嵌套滑动冲突解决的代码片段所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存