Android CollapsingToolbarLayout不希望Toolbar固定在顶部的技术咨询
解决CollapsingToolbarLayout滚动时Toolbar不固定的问题
嘿,我来帮你搞定这个需求!你的布局里,Toolbar之所以会在滚动时固定在顶部,核心原因是两个属性的组合:Toolbar的app:layout_collapseMode="pin",以及CollapsingToolbarLayout的app:layout_scrollFlags="scroll|exitUntilCollapsed"。咱们一步步调整就能实现你要的效果。
核心修改点
- 移除Toolbar的固定属性:
app:layout_collapseMode="pin"这个属性就是专门让Toolbar在折叠时钉在顶部的,把它去掉,Toolbar就会跟着CollapsingToolbarLayout一起滚动了。 - 调整CollapsingToolbarLayout的滚动行为:原来的
scroll|exitUntilCollapsed会让布局折叠到最小高度(也就是Toolbar的高度)后停止滚动。如果想让Toolbar完全随布局滚出屏幕,只保留scroll就好;如果希望向下滚动时能快速重新展开布局,可以改成scroll|enterAlways。
修改后的完整布局示例
<DrawerLayout> <CoordinatorLayout> <AppBarLayout> <!-- 去掉exitUntilCollapsed,只保留scroll --> <CollapsingToolbarLayout app:layout_scrollFlags="scroll"> <ImageView app:layout_collapseMode="parallax"> <!-- 移除了pin属性,Toolbar会随布局一起滚动 --> <Toolbar> </Toolbar> </CollapsingToolbarLayout> </AppBarLayout> <RecyclerView app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </CoordinatorLayout> </DrawerLayout>
额外优化:给Toolbar加视差效果
如果你想让Toolbar和ImageView一样有视差滚动的效果,可以给Toolbar加上app:layout_collapseMode="parallax",这样滚动时Toolbar会有轻微的滞后感,视觉效果更流畅:
<Toolbar app:layout_collapseMode="parallax">
各属性的作用说明
scroll:允许CollapsingToolbarLayout随滚动事件一起移动。exitUntilCollapsed:让布局折叠到最小高度后停止,这就是原来Toolbar固定的关键。enterAlways:向下滚动时,CollapsingToolbarLayout会立即展开,适合需要快速回到顶部操作的场景。parallax:让View在滚动时产生视差效果,增加页面的层次感。
内容的提问来源于stack exchange,提问作者Sadeq Shajary
相关产品推荐
相关产品推荐

