rvview.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); //判断是当前layoutManager是否为LinearLayoutManager // 只有LinearLayoutManager才有查找第一个和最后一个可见view位置的方法 if (layoutManager instanceof LinearLayoutManager) { LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager; //获取最后一个可见view的位置 int lastItemPosition = linearManager.findLastVisibleItemPosition(); //获取第一个可见view的位置 int firstItemPosition = linearManager.findFirstVisibleItemPosition(); if (lastItemPosition > 10) { tvCount.setVisibility(View.VISIBLE); tvCount.setText(lastItemPosition + "\n一\n" + list.size()); shouCount = true; } else { shouCount = false; tvCount.setVisibility(View.GONE); } switch (newState) { case RecyclerView.SCROLL_STATE_IDLE: if (shouCount) { tvCount.setText("一\n" + "↑\n顶部"); } break; } LogUtils.LogE("setOnScrollListener", lastItemPosition + " " + firstItemPosition); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); } });