在下面的GIF中,您会发现我无法以这种方式协调(呵呵)AppBarLayout,其中包含CollapsingToolbarLayout和Persistent BottomSheet他们一起玩得很好
目标: 上面以绿松石(fragment contents)显示的#26999f保持在上方,然后向后滚动,BottomSheet,上面以深绿色显示(#12783e),同时也尊重AppBarLayout及其行为
再次,正如你从GIF中看到的那样,我关闭了;片段内容使用的是custom layout_behavior,MyScrollingViewBehavior,它扩展了AppBarLayout.ScrollingViewBehavior
在下面的代码段中,如果MyScrollingViewBehavior#layoutDependsOn
是true
的实例,则dependency
会返回RelativeLayout
(本例中为BottomSheet)或者super
(AppBarLayout.ScrollingViewBehavior#layoutDependsOn
)依赖于
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
return dependency instanceof RelativeLayout ||
super.layoutDependsOn(parent, child, dependency);
}
在MyScrollingViewBehavior#onDependentViewChanged
内如果dependency
是RelativeLayout
的实例,意味着依赖关系是BottomSheet,则子项(即片段内容)使用{{1}向上或向下移动确保它保持在BottomSheet
offsetTopAndBottom
可以找到完整的代码示例on Github here。此外,这个问题是my original question here
的后续和有希望的改进