整体效果
代码:第一种为按钮点击,布局置顶
AppbarLayout有两种状态:折叠状态和展开状态。
可以通过 setExpanded (boolean expanded) 方法设置状态。
addOnOffsetChangedListener当AppbarLayout 的偏移发生改变的时候回调,也就是子View滑动。
可以通过以下方法设置自动滚动到指定位置:
tvHome1Recommend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//置顶
CoordinatorLayout.Behavior behavior1 = ((CoordinatorLayout.LayoutParams) appBar.getLayoutParams()).getBehavior();
if (behavior1 != null) {
behavior1.onNestedPreScroll(coordLayout, appBar, ll_unbindSchool, 0, DensityUtil.dp2px(ll_unbindSchool.getTop()), new int[]{0, 0}, TYPE_NON_TOUCH);
}
}
});
第二种滑动置顶:当滑动改变其位置
该段代码只能放到addOnOffsetChangedListener的监听中执行,否则获取的behavior为空。
CoordinatorLayout.Behavior behavior1 = ((CoordinatorLayout.LayoutParams) mAppbarLayout.getLayoutParams()).getBehavior();
if (behavior1 != null) {
behavior1.onNestedPreScroll(mCoorDinator, mAppbarLayout, mRvRoot, 0, ShortVideoUtils.dp2px(185), new int[]{0, 0}, TYPE_NON_TOUCH);
}
第三种:
appBar.setExpanded(false);
xml: