如何在代码中改变appbarlayout的位置

如何在代码中改变appbarlayout的位置.
比如在略懂的这个需求中, 当需要在代码中刷新页面列表数据时, 要回到列表的顶部, 并且需要把隐藏的appbarlayout显示出来.
最后通过看代码, 依葫芦画瓢,

appbarlayout在滑动时, 实际上是通过下面这个方法实现的:
HeaderBehavior.java:


图片.png

--> setHeaderTopBottomOffset() --> setTopAndBottomOffset(newOffset);

所以我们可以就使用这个方法setTopAndBottomOffset()

这么做, 测了一下可以:
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
CoordinatorLayout.Behavior behavior = layoutParams.getBehavior();
Log.d(TAG, "onDoubleClick: behavior:"+behavior);
AppBarLayout.Behavior appBehavior = (AppBarLayout.Behavior) behavior;
Log.d(TAG, "onDoubleClick: getTopAndBottomOffset:"+appBehavior.getTopAndBottomOffset());
appBehavior.setTopAndBottomOffset(-appBehavior.getTopAndBottomOffset());

你可能感兴趣的:(如何在代码中改变appbarlayout的位置)