在开发过程中遇到recyclerView事件上下冲突问题,赶紧做了一下笔记;
从网上搜了很多有关recyclerView底部滑动,很多人都用第一种方案:
方案-、
public static boolean isVisBottom(RecyclerView recyclerView) { LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); //屏幕中最后一个可见子项的position int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition(); //当前屏幕所看到的子项个数 int visibleItemCount = layoutManager.getChildCount(); //当前RecyclerView的所有子项个数 int totalItemCount = layoutManager.getItemCount(); //RecyclerView的滑动状态 int state = recyclerView.getScrollState(); if (visibleItemCount > 0 && lastVisibleItemPosition == totalItemCount - 1 && state == recyclerView.SCROLL_STATE_IDLE) { return true; } else { return false; } }
一种是否滚动到底部,方案二:
方案二:
public static boolean isBottomTouchEvent(MotionEvent event) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { if (recyclerView == null) return false; if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() >= recyclerView.computeVerticalScrollRange()){ return true; }else{ return false; } return false; }
------------------------------------------->>
由于我目前的功能出现了事件冲突,需要去处理滚动事件到顶部和底部后继续进行事件传递,
因此我采用了以下方案:
代码参考:
recyclerView=(RecyclerView)findViewById(R.id.recycler_vertical_view); LayoutManager=new LinearLayoutManager(this.getContext()); LayoutManager.setOrientation(LinearLayoutManager.VERTICAL); LayoutManager.setRecycleChildrenOnDetach(true); recyclerView.setLayoutManager(LayoutManager); mData=new ArrayList<>(); adapter=new myAdapter(this,mContext,mData); RecyclerList.setAdapter(adapter);
方案:1顶部:
public boolean isTopEvent(MotionEvent ev) { if(ev.getAction()==MotionEvent.ACTION_DOWN){ //表示向上滚动,如果为false表示已经到顶部了. if (recyclerView.canScrollVertically(-1)) { return ture; } else { return false; } } return false; }
方案:2底部:
public boolean isBottomEvent(MotionEvent ev) { if(ev.getAction()==MotionEvent.ACTION_DOWN){ //表示向下滚动,如果为false表示已经到底部了. if (recyclerView.canScrollVertically(1)) { return true; } else { return false; } } return false; }
在这就不详解canScrollVertically(),有兴趣的同学,可以查看源码;
------------------------------------------->>
以上是在自己研发过程遇到的问题,仅供参考谢谢;
参考:http://www.jianshu.com/p/c138055af5d2