底部有demo 地址***************************
需要提前知道一些只是
RecyclerView.SCROLL_STATE_IDLE 是RecyclerView 滑动停止状态
findFirstVisibleItemPosition 可见界面第一个item 的position
smoothScrollToPosition(0) 滑动到顶部
下面看下代码
public class RecyActivity extends AppCompatActivity{private RecyclerView recyclerView;RecyclerViewAdapter adapter;List<String> list = new ArrayList<>();private TextView back_txt;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.recy_activity_layout);back_txt = findViewById(R.id.back_txt);recyclerView = findViewById(R.id.recy);for (int i=0;i<30;i++){list.add("");}recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));adapter = new RecyclerViewAdapter(this,R.layout.recy_item_layout,list);recyclerView.setAdapter(adapter);recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(@NonNull final RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);//获得recyclerView的线性布局管理器LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();int firstVisibleItemPosition = manager.findFirstVisibleItemPosition();Log.i("------first", String.valueOf(firstVisibleItemPosition));//判断不滑动的情况if (newState ==RecyclerView.SCROLL_STATE_IDLE){// 判断是否滚动超过一屏if (firstVisibleItemPosition ==0){ //没有超过一屏幕//这里隐藏是为了滑动之后显示了,在手动滑动到首页了,就隐藏back_txt.setVisibility(View.GONE);}else{back_txt.setVisibility(View.VISIBLE);back_txt.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {recyclerView.smoothScrollToPosition(0);// recyclerView.scrollToPosition(0);back_txt.setVisibility(View.GONE);}});}}}});}}
demo 参考地址