美文网首页Android开发积累Android专题
CoordinatorLayout 代码控制滚动位置

CoordinatorLayout 代码控制滚动位置

作者: 黑键手记 | 来源:发表于2019-03-01 14:46 被阅读144次

    如题,项目中有一个需求,就是 CoordinatorLayout 嵌套的布局下,点击下方的 Tab,切换,并展示整屏。

    如上图:点击下方的 视频、文章的时候,顶部自动向上滑动,展示全屏,请看效果图


    那么这个怎么做呢?

    其实关键的代码逻辑是CoordinatorLayout.BehaviorsetTopAndBottomOffset()
    方法

    首先这个方法位于



    所以要执行这个方法,必须保证 当前操作的 view 的父容器是 CoordinatorLayout

    我们来看一下这个方法官网的介绍

    是不是白看,哈哈,其实看名字大概知道一二了,就是通过这个方法去设置顶部的偏移量。

    不过需要注意的是,这里设置的值不是滚动量,而是偏移量,我们想让控件往上滚,说明要传入一个负值。

    提供一下我的方法

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

    然后将此方法,放置于 切换 Tab 的监听中,即能实现上方流程。

    相关文章

      网友评论

        本文标题:CoordinatorLayout 代码控制滚动位置

        本文链接:https://www.haomeiwen.com/subject/nriruqtx.html