1.RecyclerView中的线性布局
注意这里的可以是this 由于写在fragment里面所以为getContext()
rv.setLayoutManager(new LinearLayoutManager(getContext()));
下面就是具体的操作步骤
rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//得到布局方式
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
//布局方式为LinearLayoutManager
if (layoutManager instanceof LinearLayoutManager) {
//获得游标
int position = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
if (position > 2) {
//当滑动到一定位置的时候 按钮显示
top.setVisibility(View.VISIBLE);
//点击按钮回到顶部
top.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rv.smoothScrollToPosition(0);
}
});
}else {
//如果低于定义的位置,那么隐藏按钮
top.setVisibility(View.GONE);
}
}
}
});
2.RecyclerView中的网格布局
rv.setLayoutManager(new GridLayoutManager(getContext(),2));
话不多说上代码
rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//得到布局方式
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
//布局方式为LinearLayoutManager
if (layoutManager instanceof GridLayoutManager) {
//获得游标
int position = ((GridLayoutManager) layoutManager).findFirstVisibleItemPosition();
if (position > 2) {
//当滑动到一定位置的时候 按钮显示
top.setVisibility(View.VISIBLE);
//点击按钮回到顶部
top.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rv.smoothScrollToPosition(0);
Intent intent = new Intent();
intent.setAction("one");
getActivity().sendBroadcast(intent);
}
});
}else {
//如果低于定义的位置,那么隐藏按钮
top.setVisibility(View.GONE);
}
}
}
});
3.RecyclerView中的瀑布流,这个和前两种布局不一样
rv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
rv.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
//获得当前滑动距离
int i = rv.computeVerticalScrollOffset();
//如果当前距离大于1000
if (i>1000){
//按钮显示
top.setVisibility(View.VISIBLE);
//按钮的点击事件
top.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//滑动到顶部
rv.smoothScrollToPosition(0);
Intent intent = new Intent();
intent.setAction("one");
getActivity().sendBroadcast(intent);
}
});
}else {
//否则隐藏按钮
top.setVisibility(View.GONE);
}
}
});
4.下面演示一下效果
没有滑动前
滑动之后的
最后就是点击按钮之后的
这就是RecyclerView中各个排列方式滑动一段距离点击按钮回到顶部!!!!!!!!!!!!!!