<scroll-coordinator> XElement
<scroll-coordinator> 是一个嵌套滚动协调组件,用于实现多层可滚动容器之间的联动滚动,常见于滚动吸顶等主流 APP 页面结构中,一般搭配 <viewpager> 和 <list> 等组件一起构建嵌套滚动 + 分页切换的复合场景。
<scroll-coordinator> 通过 <scroll-coordinator-header> 和 <scroll-coordinator-slot> 对嵌套结构进行协调,实现以下效果:
- 外层滚动到底部时,自动将滚动权交给内层
- 内层滚动到顶部时,自动将滚动权交还外层
- 滚动权的交接过程顺畅无断裂
使用指南
<scroll-coordinator> 的布局核心诉求是通过 CSS 控制:scroll-coordinator 的高度 == scroll-coordinator-slot 的高度 + toolbar 的高度。
布局规范
<scroll-coordinator>:纵向 flex 布局,display: flex; flex-direction: column;<scroll-coordinator-header>:脱离布局流,position: absolute;<scroll-coordinator-toolbar>:参与布局,display: flex;<scroll-coordinator-slot>:填充剩余空间,flex: 1;
纵向协同滚动
<scroll-coordinator-slot>内须放置一个<list>完成纵向协同滚动
内部横向分页滚动
<scroll-coordinator-slot>内部能够感知<viewpager>的页面切换事件,并与其中的<list>重新绑定嵌套滚动关系。
整体下拉刷新
用
<refresh>对<scroll-coordinator>进行包裹,并指定refresh-mode="fold" bounces={true},构建页面级别的 下拉刷新效果
局部下拉刷新
用
<refresh>对<scroll-coordinator-slot>内的<list>进行包裹,并指定refresh-mode="page" bounces={false},构建局部下拉刷新效果
属性
android-nested-scroll-as-child
Android
Android foldview 基于 CoordinateLayout,但它仅实现了 NestedScrollingParent,因此不支持作为子组件嵌套在其他滚动组件中,将此属性设置为 true 可使其正常工作。
bounces
iOS
Harmony
当 coordinator 滚动超出边界时启用回弹效果。
enable-scroll
Android
iOS
Clay
Harmony
设置 coordinator 是否可以垂直滚动。
enable-scroll-bar
iOS
Harmony
设置 coordinator 滚动时滚动条是否可见。
granularity
Android
iOS
Clay
Harmony
bindoffset 的事件响应粒度,一旦滚动距离超过可滚动距离的 granularity 倍,即可能触发。默认值为 0.01,但不一定每 0.01 都会触发。
header-over-slot
Android
iOS
Clay
Harmony
此属性控制 header 层级是否高于 slot,当 header 溢出时,将显示在 slot 之上。否则,将显示在 slot 之下。建议显式设置此属性,而不是使用默认值。
ios-force-scroll-detach
iOS
是否强制使 foldview 的 nested-vertical-scroll-behavior 在 iOS 上失效,此设置对其他平台无效。
ios-scrolls-to-top
iOS
当用户点击状态栏时,距离状态栏最近的触摸下方的滚动视图将滚动到顶部。仅限 iOS 功能。
refresh-mode
iOS
foldview 的下拉刷新模式,none(无,默认值)、page(分类下拉刷新)、fold(整体下拉刷新)。
事件
前端可以绑定相应的事件回调来监听元素的运行时行为,如下所示。
bindoffset
Android
iOS
Clay
Harmony
折叠进度回调
方法
前端可以通过 SelectorQuery API 调用组件方法。
setFoldExpanded
兼容性
LCD tables only load in the browser



