recyclerview 快捷滑动到顶部 或者置顶位置

快速滑动到 顶部快捷按钮显示时机判断

  recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
        override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
            super.onScrolled(recyclerView, dx, dy)
            if (mLayoutManager.findFirstVisibleItemPosition()>0) {
                vB.ivScrollTop.isVisible=true
            } else {
                vB.ivScrollTop.isGone=true
            }
        }
    })

一、CoordinatorLayout返回顶部:
CoordinatorLayout.Behavior behavior =
((CoordinatorLayout.LayoutParams) indexAppBar.getLayoutParams()).getBehavior();
if (behavior instanceof AppBarLayout.Behavior) {
AppBarLayout.Behavior appBarLayoutBehavior = (AppBarLayout.Behavior) behavior;
int topAndBottomOffset = appBarLayoutBehavior.getTopAndBottomOffset();
if (topAndBottomOffset != 0) {
appBarLayoutBehavior.setTopAndBottomOffset(0);
}
}
recyclerView.scrollToPosition(0);

二、若布局中只有recyclerview

scrollTo(int x, int y)和scrollBy(int x, int y),前者无法实现滚动,里面是空实现;后者控制具体的滚动距离。
scrollToPosition(int position),可以滚动到指定条目,但是当指定条目显示在屏幕中就不会滚动的也不能控制滚动的具体位置,实际上调用的是LayoutManager的scrollToPosition(int position)。
smoothMoveToPosition(int position)效果同scrollToPosition(int position),实际上调用的是LayoutManager的smoothScrollToPosition(RecyclerView recyclerView, State state, int position)。
LinearLayoutManager的scrollToPositionWithOffset(int position, int offset)滚动到指定条目并且可以设置相对偏移量(指定条目显示在屏幕中也会滚动到顶部)。

你可能感兴趣的:(recyclerview 快捷滑动到顶部 或者置顶位置)