recycleviw가 맨 아래로 미끄러지는지 확인

4070 단어 android
recycleviw가 아래로 미끄러지는지 여부를 판단하는 방법,내 경험과 온라인 예제를 결합하여 다음 4가지 방법을 요약합니다.

방법 1:



 mRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
                super.onScrollStateChanged(recyclerView, newState)
                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                    //The number of items seen on the current screen
val childCount = mRecyclerView.childCount
                   //or
                   //val childCount = mRecyclerView.layoutManager.childCount
                   //number of all items of the RecyclerView
                    val itemCount = mRecyclerView.layoutManager.itemCount
                  //The position of the first visible item in the screen
                    val firstVisibleItem = (mRecyclerView.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
                    if (firstVisibleItem + childCount == itemCount) {
                        //have slide to the bottom...
                    }
                }
            }
}

방법 2:



사실, 이 방법은 첫 번째 방법과 동일합니다. 코드를 직접 참조하세요.

override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
                super.onScrollStateChanged(recyclerView, newState)
                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                    //The number of items seen on the current screen
                    val childCount = mRecyclerView.childCount
                    //or
                    val childCount = mRecyclerView.layoutManager.childCount
                    //number of all items of the RecyclerView
                    val itemCount = mRecyclerView.layoutManager.itemCount
                    //The position of the last visible item in the screen
                    val lastVisibleItem = (mRecyclerView.layoutManager as LinearLayoutManager).findLastVisibleItemPosition()
                    if (childCount > 0 && lastVisibleItem== itemCount - 1) {
                   //have slide to the bottom...
                    }
                }
            }

방법 3:



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()는 전체 보기의 높이입니다.

방법 4:



RecyclerView.canScrollVertically (1) 값은 위로 스크롤할 수 있는지 여부를 나타내고, false는 아래로 스크롤되었음을 나타냅니다.
RecyclerView.canScrollVertically(-1)는 아래로 스크롤할 수 있는지 여부를 나타내고 false는 맨 위로 스크롤했음을 나타냅니다.

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if(mRecyclerView.canScrollVertically(1)){
                    Log.i(TAG, "direction 1: true");
                }else {
                    Log.i(TAG, "direction 1: false");//has been scrolled to the bottom
                }
                if(mRecyclerView.canScrollVertically(-1)){
                    Log.i(TAG, "direction -1: true");
                }else {
                    Log.i(TAG, "direction -1: false");//has scrolled to the top
                }
            }
        });

좋은 웹페이지 즐겨찾기