CoordinatorLayout+recycleviw实现一键置顶功能

  public void scrollToTop() {
        //拿到 appbar 的 behavior,让 appbar 滚动
        ViewGroup.LayoutParams layoutParams = appBarLayout.getLayoutParams();
        CoordinatorLayout.Behavior behavior =
                ((CoordinatorLayout.LayoutParams) layoutParams).getBehavior();
        if (behavior instanceof AppBarLayout.Behavior) {
            AppBarLayout.Behavior appBarLayoutBehavior = (AppBarLayout.Behavior) behavior;
            //拿到下方tabs的y坐标,即为我要的偏移量
            float y = noContainer.getY();
           // mrecycleview.setNestedScrollingEnabled(false);//禁止滑动
            mrecycleview.setNestedScrollingEnabled(true);//滑动
            //注意传递负值
            appBarLayoutBehavior.setTopAndBottomOffset((int) -y);

           //appBarLayout.setExpanded(true);
        }
    }

主要就是这一句,我的底部还有一个viewpager(里面装的是recycleview的商品item),在上滑动到viewpager上面的recycleview禁止滑动了,所以我的 添加了这句 mrecycleview.setNestedScrollingEnabled(true);//滑动

当然点击置顶按钮的时候,还要给viewpager里面的recycleview传个置顶的功能(例如我的通过EvenBus传的mRecycleview.scrollToPosition(0);商品在viewpager中置顶),没有这个的可以不传。

欢迎指正,如果还要别的方法也可以发出来。

猜你喜欢

转载自blog.csdn.net/weixin_37438128/article/details/110876343