美文网首页
RecyclerViewo判断滑动到底部的方法

RecyclerViewo判断滑动到底部的方法

作者: 梦半觉 | 来源:发表于2017-07-04 20:07 被阅读18次

    方法一:

    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;  
      }
    }
    

    很明显,当屏幕中最后一个子项lastVisibleItemPosition等于所有子项个数totalItemCount - 1,那么RecyclerView就到达了底部。但是,我在这种方法中发现了极为极端的情况,就是当totalItemCount等于1,而这个子项的高度比屏幕还要高。

    方法二:

    public static boolean isSlideToBottom(RecyclerView recyclerView) {    
       if (recyclerView == null) return false; 
       if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() 
            >= recyclerView.computeVerticalScrollRange())   
         return true;  
       return false;
    }
    
    原理图

    computeVerticalScrollExtent()是当前屏幕显示的区域高度;computeVerticalScrollOffset() 是当前屏幕之前滑过的距离;computeVerticalScrollRange()是整个View控件的高度。

    方法三:

    RecyclerView.canScrollVertically(1)的值表示是否能向上滚动,false表示已经滚动到底部
    RecyclerView.canScrollVertically(-1)的值表示是否能向下滚动,false表示已经滚动到顶部
    

    相关文章

      网友评论

          本文标题:RecyclerViewo判断滑动到底部的方法

          本文链接:https://www.haomeiwen.com/subject/vxwxhxtx.html