Android开发积累Android专题

CoordinatorLayout 代码控制滚动位置

2019-03-01  本文已影响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 的监听中,即能实现上方流程。

上一篇下一篇

猜你喜欢

热点阅读