1e41f4b71Sopenharmony_ci# Scroll 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci可滚动的容器组件,当子组件的布局尺寸超过父组件的尺寸时,内容可以滚动。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> - 该组件从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 7e41f4b71Sopenharmony_ci> - 该组件嵌套List子组件滚动时,若List不设置宽高,则默认全部加载,在对性能有要求的场景下建议指定List的宽高。 8e41f4b71Sopenharmony_ci> - 该组件滚动的前提是主轴方向大小小于内容大小。 9e41f4b71Sopenharmony_ci> - Scroll组件[通用属性clip](ts-universal-attributes-sharp-clipping.md)的默认值为true。 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci## 子组件 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci支持单个子组件。 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci## 接口 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciScroll(scroller?: Scroller) 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci**参数:** 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 28e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 29e41f4b71Sopenharmony_ci| scroller | [Scroller](#scroller) | 否 | 可滚动组件的控制器。用于与可滚动组件进行绑定。 | 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci## 属性 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci除支持[通用属性](ts-universal-attributes-size.md)和[滚动组件通用属性](ts-container-scrollable-common.md#属性)外,还支持以下属性: 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci### scrollable 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ciscrollable(value: ScrollDirection) 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci设置滚动方向。 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci**参数:** 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 48e41f4b71Sopenharmony_ci| ------ | ------------------------------------------- | ---- | ----------------------------------------------- | 49e41f4b71Sopenharmony_ci| value | [ScrollDirection](#scrolldirection枚举说明) | 是 | 滚动方向。<br/>默认值:ScrollDirection.Vertical | 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci### scrollBar 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ciscrollBar(barState: BarState) 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci设置滚动条状态。如果容器组件无法滚动,则滚动条不显示。如果容器组件的子组件大小为无穷大,则滚动条不支持拖动和伴随滚动。 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci从API version 10开始,当滚动组件存在圆角时,为避免滚动条被圆角截断,滚动条会自动计算距顶部和底部的避让距离。 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci**参数:** 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 66e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | ---- | -------------------------------------- | 67e41f4b71Sopenharmony_ci| barState | [BarState](ts-appendix-enums.md#barstate) | 是 | 滚动条状态。<br/>默认值:BarState.Auto | 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci### scrollBarColor 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ciscrollBarColor(color: Color | number | string) 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci设置滚动条的颜色。 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci**参数:** 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 82e41f4b71Sopenharmony_ci| ------ | ------------------------------------------------------------ | ---- | -------------- | 83e41f4b71Sopenharmony_ci| color | [Color](ts-appendix-enums.md#color) \| number \| string | 是 | 滚动条的颜色。<br/>默认值:'\#182431'(40%不透明度) | 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci### scrollBarWidth 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ciscrollBarWidth(value: number | string) 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci设置滚动条的宽度,不支持百分比设置。宽度设置后,滚动条正常状态和按压状态宽度均为滚动条的宽度值。如果滚动条的宽度超过Scroll组件主轴方向的高度,则滚动条的宽度会变为默认值。 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci**参数:** 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 98e41f4b71Sopenharmony_ci| ------ | -------------------------- | ---- | ----------------------------------------- | 99e41f4b71Sopenharmony_ci| value | number \| string | 是 | 滚动条的宽度。<br/>默认值:4<br/>单位:vp | 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci### scrollSnap<sup>10+</sup> 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ciscrollSnap(value: ScrollSnapOptions) 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci设置Scroll组件的限位滚动模式。 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci**参数:** 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 114e41f4b71Sopenharmony_ci| ------ | ----------------------------------------- | ---- | -------------------------- | 115e41f4b71Sopenharmony_ci| value | [ScrollSnapOptions](#scrollsnapoptions10) | 是 | Scroll组件的限位滚动模式。 | 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci### edgeEffect 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ciedgeEffect(edgeEffect: EdgeEffect, options?: EdgeEffectOptions) 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci设置边缘滑动效果。 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci**参数:** 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 130e41f4b71Sopenharmony_ci| --------------------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ | 131e41f4b71Sopenharmony_ci| edgeEffect | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 是 | Scroll组件的边缘滑动效果,支持弹簧效果和阴影效果。<br/>默认值:EdgeEffect.None | 132e41f4b71Sopenharmony_ci| options<sup>11+</sup> | [EdgeEffectOptions](ts-container-scrollable-common.md#edgeeffectoptions11对象说明) | 否 | 组件内容大小小于组件自身时,是否开启滑动效果。设置为{ alwaysEnabled: true }会开启滑动效果,{ alwaysEnabled: false }不开启。<br/>默认值:{ alwaysEnabled: true } | 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci### enableScrollInteraction<sup>10+</sup> 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_cienableScrollInteraction(value: boolean) 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci设置是否支持滚动手势,当设置为false时,无法通过手指或者鼠标滚动,但不影响控制器的滚动接口。 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci**参数:** 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 147e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ----------------------------------- | 148e41f4b71Sopenharmony_ci| value | boolean | 是 | 是否支持滚动手势。<br/>默认值:true | 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci### nestedScroll<sup>10+</sup> 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_cinestedScroll(value: NestedScrollOptions) 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci设置向前向后两个方向上的嵌套滚动模式,实现与父组件的滚动联动。 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci**参数:** 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 163e41f4b71Sopenharmony_ci| ------ | ----------------------------------------------------- | ---- | -------------- | 164e41f4b71Sopenharmony_ci| value | [NestedScrollOptions](ts-container-scrollable-common.md#nestedscrolloptions10对象说明) | 是 | 嵌套滚动选项。<br/>默认值:{ scrollForward: NestedScrollMode.SELF_ONLY, scrollBackward: NestedScrollMode.SELF_ONLY }| 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci### friction<sup>10+</sup> 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_cifriction(value: number | Resource) 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci设置摩擦系数,手动划动滚动区域时生效,只对惯性滚动过程有影响,对惯性滚动过程中的链式效果有间接影响。设置为小于等于0的值时,按默认值处理 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci**参数:** 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 179e41f4b71Sopenharmony_ci| ------ | ---------------------------------------------------- | ---- | --------------------------------------------------------- | 180e41f4b71Sopenharmony_ci| value | number \| [Resource](ts-types.md#resource) | 是 | 摩擦系数。<br/>默认值:非可穿戴设备为0.6,可穿戴设备为0.9。<br/>从API version 11开始,非可穿戴设备默认值为0.7。<br/>从API version 12开始,非可穿戴设备默认值为0.75。 | 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci### enablePaging<sup>11+</sup> 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_cienablePaging(value: boolean) 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci设置是否支持划动翻页。如果同时设置了划动翻页enablePaging和限位滚动scrollSnap,则scrollSnap优先生效,enablePaging不生效。 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci**参数:** 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 195e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ------------------------------------- | 196e41f4b71Sopenharmony_ci| value | boolean | 是 | 是否支持划动翻页。设置为true支持滑动翻页,false不支持。 <br/>默认值:false | 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci### initialOffset<sup>12+</sup> 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ciinitialOffset(value: OffsetOptions) 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci设置初始滚动偏移量。只在首次布局时生效,后续动态修改该属性值不生效。 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**参数:** 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 211e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ------------------------------------- | 212e41f4b71Sopenharmony_ci| value | [OffsetOptions](#offsetoptions12对象说明) | 是 |当输入的大小为百分比时,初始滚动偏移量为Scroll组件主轴方向大小与百分比数值之积。| 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci## ScrollDirection枚举说明 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci| 名称 | 说明 | 219e41f4b71Sopenharmony_ci| ---------- | ------------------------ | 220e41f4b71Sopenharmony_ci| Horizontal | 仅支持水平方向滚动。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 221e41f4b71Sopenharmony_ci| Vertical | 仅支持竖直方向滚动。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 222e41f4b71Sopenharmony_ci| None | 不可滚动。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 223e41f4b71Sopenharmony_ci| Free<sup>(deprecated) </sup> | 支持竖直或水平方向滚动<br/> 从API version 9开始废弃。| 224e41f4b71Sopenharmony_ci 225e41f4b71Sopenharmony_ci## ScrollSnapOptions<sup>10+</sup> 226e41f4b71Sopenharmony_ci 227e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 228e41f4b71Sopenharmony_ci 229e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 230e41f4b71Sopenharmony_ci 231e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 232e41f4b71Sopenharmony_ci| ---------- | --------------------|-------------------- | -------- | 233e41f4b71Sopenharmony_ci| snapAlign | [ScrollSnapAlign](ts-container-list.md#scrollsnapalign10枚举说明) | 是 | 设置Scroll组件限位滚动时的对齐方式。<br/>**说明:** <br/>1.该属性默认值为ScrollSnapAlign.NONE。 | 234e41f4b71Sopenharmony_ci| snapPagination | [Dimension](ts-types.md#dimension10) \| Array\<Dimension\> | 否 | 设置Scroll组件限位滚动时的限位点,限位点即为Scroll组件能滑动停靠的偏移量。<br/>**说明:** <br/>1.当属性为Dimension时,表示每页的大小,系统会按照该大小来自动计算每个限位点的位置:如当Dimension为500时,实际的限位点即为[0,500,1000,1500,...]。<br/>2.当属性为Array\<Dimension\>时,每个Dimension代表限位点的位置。每个Dimension的范围为[0,可滑动距离],0和可滑动距离的底部自动成为限位点。<br/>3.当该属性不填或者Dimension为小于等于0的输入时,按异常值,无限位滚动处理。当该属性值为Array\<Dimension\>数组时,数组中的数值必须为单调递增。<br/>4.当输入为百分比时,实际的大小为Scroll组件的视口与百分比数值之积。 | 235e41f4b71Sopenharmony_ci| enableSnapToStart | boolean | 否 | 在Scroll组件限位滚动模式下,该属性设置为false后,允许Scroll在开头和第一个限位点间自由滑动。<br/>**说明:** <br/>1.该属性值默认为true。<br/>2.该属性仅当snapPagination属性为Array\<Dimension\>时生效,不支持Dimension。 | 236e41f4b71Sopenharmony_ci| enableSnapToEnd | boolean | 否 | 在Scroll组件限位滚动模式下,该属性设置为false后,允许Scroll在最后一个限位点和末尾间自由滑动。<br/>**说明:** <br/>1.该属性值默认为true。<br/>2.该属性仅当snapPagination属性为Array\<Dimension\>时生效,不支持Dimension。 | 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci## 事件 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci除支持[通用事件](ts-universal-events-click.md)和[滚动组件通用事件](ts-container-scrollable-common.md#事件)外,还支持以下事件: 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_ci### onScrollFrameBegin<sup>9+</sup> 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_cionScrollFrameBegin(event: (offset: number, state: ScrollState) => { offsetRemain: number; }) 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci每帧开始滚动时触发,事件参数传入即将发生的滚动量,事件处理函数中可根据应用场景计算实际需要的滚动量并作为事件处理函数的返回值返回,Scroll将按照返回值的实际滚动量进行滚动。 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci支持offsetRemain为负值。 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci若通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动,需设置子滚动节点的EdgeEffect为None。如Scroll嵌套List滚动时,List组件的edgeEffect属性需设置为EdgeEffect.None。 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci触发该事件的条件: 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci1、滚动组件触发滚动时触发,包括键鼠操作等其他触发滚动的输入设置。<br/>2、调用控制器接口时不触发。<br/>3、越界回弹不触发。<br/>4、拖动滚动条不触发。 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci**参数:** 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 263e41f4b71Sopenharmony_ci| ------ | ------------------------------------------------------- | ---- | -------------------------- | 264e41f4b71Sopenharmony_ci| offset | number | 是 | 即将发生的滑动量,单位vp。 | 265e41f4b71Sopenharmony_ci| state | [ScrollState](ts-container-list.md#scrollstate枚举说明) | 是 | 当前滑动状态。 | 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_ci**返回值:** 268e41f4b71Sopenharmony_ci 269e41f4b71Sopenharmony_ci| 类型 | 说明 | 270e41f4b71Sopenharmony_ci| ------------------------ | -------------------- | 271e41f4b71Sopenharmony_ci| { offsetRemain: number } | 实际滑动量,单位vp。 | 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci### onScroll<sup>(deprecated)</sup> 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_cionScroll(event: (xOffset: number, yOffset: number) => void) 276e41f4b71Sopenharmony_ci 277e41f4b71Sopenharmony_ci滚动事件回调,返回滚动时水平、竖直方向偏移量,单位vp。 278e41f4b71Sopenharmony_ci 279e41f4b71Sopenharmony_ci触发该事件的条件 : 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ci1、滚动组件触发滚动时触发,支持键鼠操作等其他触发滚动的输入设置。 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci2、通过滚动控制器API接口调用。 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci3、越界回弹。 286e41f4b71Sopenharmony_ci 287e41f4b71Sopenharmony_ci从API version12开始废弃不再使用,推荐使用[onWillScroll](#onwillscroll12)事件替代。 288e41f4b71Sopenharmony_ci 289e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci**参数:** 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 296e41f4b71Sopenharmony_ci| ------- | --------------------------------------------------------- | ---- | ---------------------- | 297e41f4b71Sopenharmony_ci| xOffset | number | 是 | 每帧滚动时水平方向的偏移量,Scroll的内容向左滚动时偏移量为正,向右滚动时偏移量为负。<br/>单位vp。 | 298e41f4b71Sopenharmony_ci| yOffset | number | 是 | 每帧滚动时竖直方向的偏移量,Scroll的内容向上滚动时偏移量为正,向下滚动时偏移量为负。<br/>单位vp。 | 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_ci### onWillScroll<sup>12+</sup> 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_cionWillScroll(handler: ScrollOnWillScrollCallback) 303e41f4b71Sopenharmony_ci 304e41f4b71Sopenharmony_ci滚动事件回调,Scroll滚动前触发。 305e41f4b71Sopenharmony_ci 306e41f4b71Sopenharmony_ci回调当前帧将要滚动的偏移量和当前滚动状态和滚动操作来源,其中回调的偏移量为计算得到的将要滚动的偏移量值,并非最终实际滚动偏移。可以通过该回调返回值指定Scroll将要滚动的偏移。 307e41f4b71Sopenharmony_ci 308e41f4b71Sopenharmony_ci触发该事件的条件 : 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_ci1、滚动组件触发滚动时触发,支持键鼠操作等其他触发滚动的输入设置。 311e41f4b71Sopenharmony_ci 312e41f4b71Sopenharmony_ci2、通过滚动控制器API接口调用。 313e41f4b71Sopenharmony_ci 314e41f4b71Sopenharmony_ci3、越界回弹。 315e41f4b71Sopenharmony_ci 316e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 317e41f4b71Sopenharmony_ci 318e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ci**参数:** 321e41f4b71Sopenharmony_ci 322e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 323e41f4b71Sopenharmony_ci| ------- | --------------------------------------------------------- | ---- | ---------------------- | 324e41f4b71Sopenharmony_ci| handler | [ScrollOnWillScrollCallback](#scrollonwillscrollcallback12) | 是 | Scroll滚动前触发的回调。 | 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_ci### onDidScroll<sup>12+</sup> 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_cionDidScroll(handler: ScrollOnScrollCallback) 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci滚动事件回调,Scroll滚动时触发。 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci返回当前帧滚动的偏移量和当前滚动状态。 333e41f4b71Sopenharmony_ci 334e41f4b71Sopenharmony_ci触发该事件的条件 : 335e41f4b71Sopenharmony_ci 336e41f4b71Sopenharmony_ci1、滚动组件触发滚动时触发,支持键鼠操作等其他触发滚动的输入设置。 337e41f4b71Sopenharmony_ci 338e41f4b71Sopenharmony_ci2、通过滚动控制器API接口调用。 339e41f4b71Sopenharmony_ci 340e41f4b71Sopenharmony_ci3、越界回弹。 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 343e41f4b71Sopenharmony_ci 344e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 345e41f4b71Sopenharmony_ci 346e41f4b71Sopenharmony_ci**参数:** 347e41f4b71Sopenharmony_ci 348e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 349e41f4b71Sopenharmony_ci| ------- | --------------------------------------------------------- | ---- | ---------------------- | 350e41f4b71Sopenharmony_ci| handler | [ScrollOnScrollCallback](#scrollonscrollcallback12) | 是 | Scroll滚动时触发的回调 | 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ci### onScrollEdge 353e41f4b71Sopenharmony_ci 354e41f4b71Sopenharmony_cionScrollEdge(event: (side: Edge) => void) 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci滚动到边缘事件回调。 357e41f4b71Sopenharmony_ci 358e41f4b71Sopenharmony_ci触发该事件的条件 : 359e41f4b71Sopenharmony_ci 360e41f4b71Sopenharmony_ci1、滚动组件滚动到边缘时触发,支持键鼠操作等其他触发滚动的输入设置。<br/>2、通过滚动控制器API接口调用。<br/>3、越界回弹。 361e41f4b71Sopenharmony_ci 362e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 363e41f4b71Sopenharmony_ci 364e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 365e41f4b71Sopenharmony_ci 366e41f4b71Sopenharmony_ci**参数:** 367e41f4b71Sopenharmony_ci 368e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 369e41f4b71Sopenharmony_ci| ------ | --------------------------------- | ---- | ------------------ | 370e41f4b71Sopenharmony_ci| side | [Edge](ts-appendix-enums.md#edge) | 是 | 滚动到的边缘位置。 | 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_ci### onScrollEnd<sup>(deprecated) </sup> 373e41f4b71Sopenharmony_ci 374e41f4b71Sopenharmony_cionScrollEnd(event: () => void) 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ci滚动停止事件回调。 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci触发该事件的条件 : 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_ci1、滚动组件触发滚动后停止,支持键鼠操作等其他触发滚动的输入设置。<br/>2、通过滚动控制器API接口调用后停止,带过渡动效。 381e41f4b71Sopenharmony_ci 382e41f4b71Sopenharmony_ci该事件从API version 9开始废弃,使用onScrollStop事件替代。 383e41f4b71Sopenharmony_ci 384e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci### onScrollStart<sup>9+</sup> 387e41f4b71Sopenharmony_ci 388e41f4b71Sopenharmony_cionScrollStart(event: () => void) 389e41f4b71Sopenharmony_ci 390e41f4b71Sopenharmony_ci滚动开始时触发。手指拖动Scroll或拖动Scroll的滚动条触发的滚动开始时,会触发该事件。使用[Scroller](#scroller)滚动控制器触发的带动画的滚动,动画开始时会触发该事件。 391e41f4b71Sopenharmony_ci 392e41f4b71Sopenharmony_ci触发该事件的条件 : 393e41f4b71Sopenharmony_ci 394e41f4b71Sopenharmony_ci1、滚动组件开始滚动时触发,支持键鼠操作等其他触发滚动的输入设置。<br/>2、通过滚动控制器API接口调用后开始,带过渡动效。 395e41f4b71Sopenharmony_ci 396e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 397e41f4b71Sopenharmony_ci 398e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 399e41f4b71Sopenharmony_ci 400e41f4b71Sopenharmony_ci### onScrollStop<sup>9+</sup> 401e41f4b71Sopenharmony_ci 402e41f4b71Sopenharmony_cionScrollStop(event: () => void) 403e41f4b71Sopenharmony_ci 404e41f4b71Sopenharmony_ci滚动停止时触发。手拖动Scroll或拖动Scroll的滚动条触发的滚动,手离开屏幕并且滚动停止时会触发该事件。使用[Scroller](#scroller)滚动控制器触发的带动画的滚动,动画停止时会触发该事件。 405e41f4b71Sopenharmony_ci 406e41f4b71Sopenharmony_ci触发该事件的条件 : 407e41f4b71Sopenharmony_ci 408e41f4b71Sopenharmony_ci1、滚动组件触发滚动后停止,支持键鼠操作等其他触发滚动的输入设置。<br/>2、通过滚动控制器API接口调用后开始,带过渡动效。 409e41f4b71Sopenharmony_ci 410e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 411e41f4b71Sopenharmony_ci 412e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 413e41f4b71Sopenharmony_ci 414e41f4b71Sopenharmony_ci## ScrollOnScrollCallback<sup>12+</sup> 415e41f4b71Sopenharmony_ci 416e41f4b71Sopenharmony_citype ScrollOnScrollCallback = (xOffset: number, yOffset: number, scrollState: ScrollState) => void 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ciScroll滚动时触发的回调。 419e41f4b71Sopenharmony_ci 420e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 421e41f4b71Sopenharmony_ci 422e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 423e41f4b71Sopenharmony_ci 424e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 425e41f4b71Sopenharmony_ci| ----------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 426e41f4b71Sopenharmony_ci| xOffset | number | 是 | 每帧滚动时水平方向的偏移量,Scroll中的内容向左滚动时偏移量为正,向右滚动时偏移量为负。<br/>单位vp。 | 427e41f4b71Sopenharmony_ci| yOffset | number | 是 | 每帧滚动时竖直方向的偏移量,Scroll中的内容向上滚动时偏移量为正,向下滚动时偏移量为负。<br/>单位vp。 | 428e41f4b71Sopenharmony_ci| scrollState | [ScrollState](ts-container-list.md#scrollstate枚举说明) | 是 | 当前滚动状态。 | 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ci> **说明:** 431e41f4b71Sopenharmony_ci> 432e41f4b71Sopenharmony_ci> 若通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动,需设置子滚动节点的EdgeEffect为None。如Scroll嵌套List滚动时,List组件的edgeEffect属性需设置为EdgeEffect.None。 433e41f4b71Sopenharmony_ci 434e41f4b71Sopenharmony_ci## ScrollOnWillScrollCallback<sup>12+</sup> 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_citype ScrollOnWillScrollCallback = (xOffset: number, yOffset: number, scrollState: ScrollState, scrollSource: ScrollSource) => void | OffsetResult 437e41f4b71Sopenharmony_ci 438e41f4b71Sopenharmony_ciScroll滚动前触发的回调。 439e41f4b71Sopenharmony_ci 440e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 441e41f4b71Sopenharmony_ci 442e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 443e41f4b71Sopenharmony_ci 444e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 445e41f4b71Sopenharmony_ci| ----------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 446e41f4b71Sopenharmony_ci| xOffset | number | 是 | 每帧滚动时水平方向的偏移量,Scroll中的内容向左滚动时偏移量为正,向右滚动时偏移量为负。<br/>单位vp。 | 447e41f4b71Sopenharmony_ci| yOffset | number | 是 | 每帧滚动时竖直方向的偏移量,Scroll中的内容向上滚动时偏移量为正,向下滚动时偏移量为负。<br/>单位vp。 | 448e41f4b71Sopenharmony_ci| scrollState | [ScrollState](ts-container-list.md#scrollstate枚举说明) | 是 | 当前滚动状态。 | 449e41f4b71Sopenharmony_ci| scrollSource | [ScrollSource](ts-appendix-enums.md#scrollsource12) | 是 | 当前滚动操作的来源。 | 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci**返回值:** 452e41f4b71Sopenharmony_ci 453e41f4b71Sopenharmony_ci| 类型 | 说明 | 454e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | ------------------------------------------------------------ | 455e41f4b71Sopenharmony_ci| void \| [OffsetResult](#offsetresult11) | 返回OffsetResult时按照开发者指定的偏移量滚动;不返回时按回调参数(xOffset,yOffset)滚动。 | 456e41f4b71Sopenharmony_ci 457e41f4b71Sopenharmony_ci## Scroller 458e41f4b71Sopenharmony_ci 459e41f4b71Sopenharmony_ci可滚动容器组件的控制器,可以将此组件绑定至容器组件,然后通过它控制容器组件的滚动,同一个控制器不可以控制多个容器组件,目前支持绑定到List、Scroll、ScrollBar、Grid、WaterFlow上。 460e41f4b71Sopenharmony_ci 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci### 导入对象 463e41f4b71Sopenharmony_ci 464e41f4b71Sopenharmony_ci``` 465e41f4b71Sopenharmony_ciscroller: Scroller = new Scroller() 466e41f4b71Sopenharmony_ci``` 467e41f4b71Sopenharmony_ci 468e41f4b71Sopenharmony_ci### constructor 469e41f4b71Sopenharmony_ci 470e41f4b71Sopenharmony_ciconstructor() 471e41f4b71Sopenharmony_ci 472e41f4b71Sopenharmony_ciScroller的构造函数。 473e41f4b71Sopenharmony_ci 474e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 475e41f4b71Sopenharmony_ci 476e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 477e41f4b71Sopenharmony_ci 478e41f4b71Sopenharmony_ci### scrollTo 479e41f4b71Sopenharmony_ci 480e41f4b71Sopenharmony_ciscrollTo(value: { xOffset: number | string, yOffset: number | string, animation?: ScrollAnimationOptions | boolean }) 481e41f4b71Sopenharmony_ci 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci滑动到指定位置。 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci**参数:** 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 492e41f4b71Sopenharmony_ci| --------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 493e41f4b71Sopenharmony_ci| xOffset | number \| string | 是 | 水平滑动偏移。<br/>**说明:** <br/>该参数值不支持设置百分比。<br/>当值小于0时,不带动画的滚动,按0处理。带动画的滚动,默认滚动到起始位置后停止,可通过设置animation参数,使滚动在越界时启动回弹动画。<br/>仅滚动轴为x轴时生效。 | 494e41f4b71Sopenharmony_ci| yOffset | number \| string | 是 | 垂直滑动偏移。<br/>**说明:** <br/>该参数值不支持设置百分比。<br/>当值小于0时,不带动画的滚动,按0处理。带动画的滚动,默认滚动到起始位置后停止,可通过设置animation参数,使滚动在越界时启动回弹动画。<br/>仅滚动轴为y轴时生效。 | 495e41f4b71Sopenharmony_ci| animation | [ScrollAnimationOptions](#scrollanimationoptions12)<sup>12+</sup> \| boolean<sup>10+ </sup> | 否 | 动画配置。<br/>- ScrollAnimationOptions: 自定义滚动动效。 <br/>- boolean: 使能默认弹簧动效。<br/>默认值:<br/>ScrollAnimationOptions: { duration: 1000, curve: Curve.Ease, canOverScroll: false } <br/>boolean: false<br/>**说明:** <br/>当前List、Scroll、Grid、WaterFlow均支持boolean类型和ICurve曲线。<br/>于API12将原来的 {duration?: number, curve?: [Curve](ts-appendix-enums.md#curve) \| [ICurve](../js-apis-curve.md#icurve)<sup>10+ </sup>} 抽象为了ScrollAnimationOptions接口,并在其中添加了一个参数canOverScroll。 | 496e41f4b71Sopenharmony_ci 497e41f4b71Sopenharmony_ci 498e41f4b71Sopenharmony_ci### scrollEdge 499e41f4b71Sopenharmony_ci 500e41f4b71Sopenharmony_ciscrollEdge(value: Edge, options?: ScrollEdgeOptions) 501e41f4b71Sopenharmony_ci 502e41f4b71Sopenharmony_ci 503e41f4b71Sopenharmony_ci滚动到容器边缘,不区分滚动轴方向,Edge.Top和Edge.Start表现相同,Edge.Bottom和Edge.End表现相同。 504e41f4b71Sopenharmony_ciScroll组件默认有动画,Grid、List、WaterFlow组件默认无动画。 505e41f4b71Sopenharmony_ci 506e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 507e41f4b71Sopenharmony_ci 508e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 509e41f4b71Sopenharmony_ci 510e41f4b71Sopenharmony_ci**参数:** 511e41f4b71Sopenharmony_ci 512e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 513e41f4b71Sopenharmony_ci| ----- | ---- | ---- | --------- | 514e41f4b71Sopenharmony_ci| value | [Edge](ts-appendix-enums.md#edge) | 是 | 滚动到的边缘位置。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 515e41f4b71Sopenharmony_ci| options<sup>12+</sup> | [ScrollEdgeOptions](#scrolledgeoptions12对象说明) | 否 | 设置滚动到边缘位置的模式。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 516e41f4b71Sopenharmony_ci 517e41f4b71Sopenharmony_ci### fling<sup>12+</sup> 518e41f4b71Sopenharmony_ci 519e41f4b71Sopenharmony_cifling(velocity: number): void 520e41f4b71Sopenharmony_ci 521e41f4b71Sopenharmony_ci 522e41f4b71Sopenharmony_ci滚动类组件开启按传入的初始速度进行惯性滚动。 523e41f4b71Sopenharmony_ci 524e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 525e41f4b71Sopenharmony_ci 526e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 527e41f4b71Sopenharmony_ci 528e41f4b71Sopenharmony_ci**参数:** 529e41f4b71Sopenharmony_ci 530e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 531e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 532e41f4b71Sopenharmony_ci| velocity | number | 是 | 惯性滚动的初始速度值。单位:vp/s<br/>**说明:**<br/>velocity值设置为0,视为异常值,本次滚动不生效。如果值为正数,则向下滚动;如果值为负数,则向上滚动。 | 533e41f4b71Sopenharmony_ci 534e41f4b71Sopenharmony_ci**错误码**: 535e41f4b71Sopenharmony_ci 536e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../../errorcode-universal.md)。 537e41f4b71Sopenharmony_ci 538e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 539e41f4b71Sopenharmony_ci| ------- | -------- | 540e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed. | 541e41f4b71Sopenharmony_ci| 100004 | Controller not bound to component. | 542e41f4b71Sopenharmony_ci 543e41f4b71Sopenharmony_ci### scrollPage<sup>9+</sup> 544e41f4b71Sopenharmony_ci 545e41f4b71Sopenharmony_ciscrollPage(value: ScrollPageOptions) 546e41f4b71Sopenharmony_ci 547e41f4b71Sopenharmony_ci滚动到下一页或者上一页。 548e41f4b71Sopenharmony_ci 549e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 550e41f4b71Sopenharmony_ci 551e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci**参数:** 554e41f4b71Sopenharmony_ci 555e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 556e41f4b71Sopenharmony_ci| ------ | -------------------------------------------------- | ---- | -------------- | 557e41f4b71Sopenharmony_ci| value | [ScrollPageOptions](#scrollpageoptions12对象说明) | 是 | 设置翻页模式。 | 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci### scrollPage<sup>(deprecated)</sup> 560e41f4b71Sopenharmony_ci 561e41f4b71Sopenharmony_ciscrollPage(value: { next: boolean, direction?: Axis }) 562e41f4b71Sopenharmony_ci 563e41f4b71Sopenharmony_ci滚动到下一页或者上一页。从API version 9开始, 该接口不再维护,推荐使用[scrollPage<sup>9+</sup>](#scrollpage9)。 564e41f4b71Sopenharmony_ci 565e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 566e41f4b71Sopenharmony_ci 567e41f4b71Sopenharmony_ci**参数:** 568e41f4b71Sopenharmony_ci 569e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 570e41f4b71Sopenharmony_ci| --------- | ------- | ---- | ------------------------------ | 571e41f4b71Sopenharmony_ci| next | boolean | 是 | 是否向下翻页。true表示向下翻页,false表示向上翻页。 | 572e41f4b71Sopenharmony_ci| direction | [Axis](ts-appendix-enums.md#axis) | 否 | 设置滚动方向为水平或竖直方向。 | 573e41f4b71Sopenharmony_ci 574e41f4b71Sopenharmony_ci### currentOffset 575e41f4b71Sopenharmony_ci 576e41f4b71Sopenharmony_cicurrentOffset(): OffsetResult 577e41f4b71Sopenharmony_ci 578e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 579e41f4b71Sopenharmony_ci 580e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 581e41f4b71Sopenharmony_ci 582e41f4b71Sopenharmony_ci| 类型 | 描述 | 583e41f4b71Sopenharmony_ci| -------- | -------- | 584e41f4b71Sopenharmony_ci| [OffsetResult<sup>11+</sup>](#offsetresult11) | 返回当前的滚动偏移量。<br/>**说明:**<br/>当scroller控制器未绑定容器组件或者容器组件被异常释放时,currentOffset的返回值为空。| 585e41f4b71Sopenharmony_ci 586e41f4b71Sopenharmony_ci### scrollToIndex 587e41f4b71Sopenharmony_ci 588e41f4b71Sopenharmony_ciscrollToIndex(value: number, smooth?: boolean, align?: ScrollAlign, options?: ScrollToIndexOptions) 589e41f4b71Sopenharmony_ci 590e41f4b71Sopenharmony_ci滑动到指定Index,支持设置滑动额外偏移量。 591e41f4b71Sopenharmony_ci 592e41f4b71Sopenharmony_ci开启smooth动效时,会对经过的所有item进行加载和布局计算,当大量加载item时会导致性能问题。 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_ci 595e41f4b71Sopenharmony_ci> **说明:** 596e41f4b71Sopenharmony_ci> 597e41f4b71Sopenharmony_ci> 仅支持Grid、List、WaterFlow组件。 598e41f4b71Sopenharmony_ci 599e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 600e41f4b71Sopenharmony_ci 601e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 602e41f4b71Sopenharmony_ci 603e41f4b71Sopenharmony_ci**参数:** 604e41f4b71Sopenharmony_ci 605e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 606e41f4b71Sopenharmony_ci| --------------------- | -------- | ---- | ------------------------------------------------------------ | 607e41f4b71Sopenharmony_ci| value | number | 是 | 要滑动到的目标元素在当前容器中的索引值。 <br/>**说明:** <br/>value值设置成负值或者大于当前容器子组件的最大索引值,视为异常值,本次跳转不生效。 | 608e41f4b71Sopenharmony_ci| smooth | boolean | 否 | 设置滑动到列表项在列表中的索引值时是否有动效,true表示有动效,false表示没有动效。<br/>默认值:false。| 609e41f4b71Sopenharmony_ci| align | [ScrollAlign](#scrollalign10枚举说明) | 否 | 指定滑动到的元素与当前容器的对齐方式。<br/>List中的默认值为:ScrollAlign.START。Grid中默认值为:ScrollAlign.AUTO。WaterFlow中的默认值为:ScrollAlign.START。<br/>**说明:** <br/>仅List、Grid、WaterFlow组件支持该参数。 | 610e41f4b71Sopenharmony_ci| options<sup>12+</sup> | [ScrollToIndexOptions](#scrolltoindexoptions12对象说明) | 否 | 设置滑动到指定Index的选项,如额外偏移量。<br/>默认值:0,单位:vp。 | 611e41f4b71Sopenharmony_ci 612e41f4b71Sopenharmony_ci### scrollBy<sup>9+</sup> 613e41f4b71Sopenharmony_ci 614e41f4b71Sopenharmony_ciscrollBy(dx: Length, dy: Length) 615e41f4b71Sopenharmony_ci 616e41f4b71Sopenharmony_ci 617e41f4b71Sopenharmony_ci滑动指定距离。 618e41f4b71Sopenharmony_ci 619e41f4b71Sopenharmony_ci 620e41f4b71Sopenharmony_ci> **说明:** 621e41f4b71Sopenharmony_ci> 622e41f4b71Sopenharmony_ci> 支持Scroll、List、Grid、WaterFlow组件。 623e41f4b71Sopenharmony_ci 624e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 625e41f4b71Sopenharmony_ci 626e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 627e41f4b71Sopenharmony_ci 628e41f4b71Sopenharmony_ci**参数:** 629e41f4b71Sopenharmony_ci 630e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 631e41f4b71Sopenharmony_ci| ----- | ------ | ---- | ----------------- | 632e41f4b71Sopenharmony_ci| dx | [Length](ts-types.md#length) | 是 | 水平方向滚动距离,不支持百分比形式。 | 633e41f4b71Sopenharmony_ci| dy | [Length](ts-types.md#length) | 是 | 竖直方向滚动距离,不支持百分比形式。 | 634e41f4b71Sopenharmony_ci 635e41f4b71Sopenharmony_ci### isAtEnd<sup>10+</sup> 636e41f4b71Sopenharmony_ci 637e41f4b71Sopenharmony_ciisAtEnd(): boolean 638e41f4b71Sopenharmony_ci 639e41f4b71Sopenharmony_ci查询组件是否滚动到底部。 640e41f4b71Sopenharmony_ci 641e41f4b71Sopenharmony_ci> **说明:** 642e41f4b71Sopenharmony_ci> 643e41f4b71Sopenharmony_ci> 支持Scroll、List、Grid、WaterFlow组件。 644e41f4b71Sopenharmony_ci 645e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 646e41f4b71Sopenharmony_ci 647e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 648e41f4b71Sopenharmony_ci 649e41f4b71Sopenharmony_ci**返回值** 650e41f4b71Sopenharmony_ci 651e41f4b71Sopenharmony_ci| 类型 | 描述 | 652e41f4b71Sopenharmony_ci| ------- | -------- | 653e41f4b71Sopenharmony_ci| boolean | true表示组件已经滚动到底部,false表示组件还没滚动到底部。 | 654e41f4b71Sopenharmony_ci 655e41f4b71Sopenharmony_ci### getItemRect<sup>11+</sup> 656e41f4b71Sopenharmony_ci 657e41f4b71Sopenharmony_cigetItemRect(index: number): RectResult 658e41f4b71Sopenharmony_ci 659e41f4b71Sopenharmony_ci获取子组件的大小及相对容器组件的位置。 660e41f4b71Sopenharmony_ci 661e41f4b71Sopenharmony_ci> **说明:** 662e41f4b71Sopenharmony_ci> 663e41f4b71Sopenharmony_ci> 支持Scroll、List、Grid、WaterFlow组件。 664e41f4b71Sopenharmony_ci 665e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 666e41f4b71Sopenharmony_ci 667e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 668e41f4b71Sopenharmony_ci 669e41f4b71Sopenharmony_ci**参数:** 670e41f4b71Sopenharmony_ci 671e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 672e41f4b71Sopenharmony_ci| ----- | ------ | ---- | ----------------- | 673e41f4b71Sopenharmony_ci| index | number | 是 | 子组件的索引值。 | 674e41f4b71Sopenharmony_ci 675e41f4b71Sopenharmony_ci> **说明:** 676e41f4b71Sopenharmony_ci> 677e41f4b71Sopenharmony_ci> - index必须是当前显示区域显示的子组件的索引值,否则视为非法值。 678e41f4b71Sopenharmony_ci> - 非法值返回的大小和位置均为0。 679e41f4b71Sopenharmony_ci 680e41f4b71Sopenharmony_ci**返回值:** 681e41f4b71Sopenharmony_ci 682e41f4b71Sopenharmony_ci| 类型 | 说明 | 683e41f4b71Sopenharmony_ci| ------------------- | -------- | 684e41f4b71Sopenharmony_ci| [RectResult](ts-types.md#rectresult10) | 子组件的大小和相对于组件的位置。<br/>单位:vp。 | 685e41f4b71Sopenharmony_ci 686e41f4b71Sopenharmony_ci**错误码**: 687e41f4b71Sopenharmony_ci 688e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../../errorcode-universal.md)。 689e41f4b71Sopenharmony_ci 690e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 691e41f4b71Sopenharmony_ci| ------- | -------- | 692e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed. | 693e41f4b71Sopenharmony_ci| 100004 | Controller not bound to component. | 694e41f4b71Sopenharmony_ci### getItemIndex<sup>13+</sup> 695e41f4b71Sopenharmony_ci 696e41f4b71Sopenharmony_cigetItemIndex(x: number, y: number): number 697e41f4b71Sopenharmony_ci 698e41f4b71Sopenharmony_ci通过坐标获取子组件的索引。 699e41f4b71Sopenharmony_ci 700e41f4b71Sopenharmony_ci> **说明:** 701e41f4b71Sopenharmony_ci> 702e41f4b71Sopenharmony_ci> 支持List、Grid、WaterFlow组件。 703e41f4b71Sopenharmony_ci 704e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 705e41f4b71Sopenharmony_ci 706e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 707e41f4b71Sopenharmony_ci 708e41f4b71Sopenharmony_ci**参数:** 709e41f4b71Sopenharmony_ci 710e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 711e41f4b71Sopenharmony_ci| ----- | ------ | ---- | ----------------- | 712e41f4b71Sopenharmony_ci| x | number | 是 | x轴坐标,单位为vp。 | 713e41f4b71Sopenharmony_ci| y | number | 是 | y轴坐标,单位为vp。 | 714e41f4b71Sopenharmony_ci 715e41f4b71Sopenharmony_ci> **说明:** 716e41f4b71Sopenharmony_ci> 717e41f4b71Sopenharmony_ci> 非法值返回的索引为-1。 718e41f4b71Sopenharmony_ci 719e41f4b71Sopenharmony_ci**返回值:** 720e41f4b71Sopenharmony_ci 721e41f4b71Sopenharmony_ci| 类型 | 说明 | 722e41f4b71Sopenharmony_ci| ------------------- | -------- | 723e41f4b71Sopenharmony_ci| number | 返回子组件的索引,单位:vp。 | 724e41f4b71Sopenharmony_ci 725e41f4b71Sopenharmony_ci**错误码**: 726e41f4b71Sopenharmony_ci 727e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../../errorcode-universal.md)。 728e41f4b71Sopenharmony_ci 729e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 730e41f4b71Sopenharmony_ci| ------- | -------- | 731e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed. | 732e41f4b71Sopenharmony_ci| 100004 | Controller not bound to component. | 733e41f4b71Sopenharmony_ci 734e41f4b71Sopenharmony_ci## OffsetResult<sup>11+</sup> 735e41f4b71Sopenharmony_ci 736e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 737e41f4b71Sopenharmony_ci 738e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 739e41f4b71Sopenharmony_ci 740e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 741e41f4b71Sopenharmony_ci| ------- |------- | ---- | ---- | -------------------------------- | 742e41f4b71Sopenharmony_ci| xOffset | number | 否 | 否 | 水平滑动偏移。<br/>返回值单位为vp。 | 743e41f4b71Sopenharmony_ci| yOffset | number | 否 | 否 | 竖直滑动偏移。<br/>返回值单位为vp。 | 744e41f4b71Sopenharmony_ci 745e41f4b71Sopenharmony_ci## ScrollAnimationOptions<sup>12+</sup> 746e41f4b71Sopenharmony_ci 747e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 748e41f4b71Sopenharmony_ci 749e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 750e41f4b71Sopenharmony_ci 751e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 752e41f4b71Sopenharmony_ci| ----- | ------ | ------ | ----------------- | 753e41f4b71Sopenharmony_ci| duration | number | 否 | 设置滚动时长。<br/>默认值:1000<br/>**说明:** <br/>设置为小于0的值时,按默认值显示。 | 754e41f4b71Sopenharmony_ci| curve | [Curve](ts-appendix-enums.md#curve) \| [ICurve](../js-apis-curve.md#icurve9) | 否 | 设置滚动曲线。<br/>默认值:Curve.Ease | 755e41f4b71Sopenharmony_ci| canOverScroll | boolean | 否 | 设置滚动是否可越界。<br/>默认值:false<br/>**说明:** <br/> 仅在设置为true,且组件的edgeEffect设置为[EdgeEffect.Spring](ts-appendix-enums.md#edgeeffect)时,滚动能够越界,并在越界时启动回弹动画。 | 756e41f4b71Sopenharmony_ci 757e41f4b71Sopenharmony_ci## ScrollAlign<sup>10+</sup>枚举说明 758e41f4b71Sopenharmony_ci 759e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 760e41f4b71Sopenharmony_ci 761e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 762e41f4b71Sopenharmony_ci 763e41f4b71Sopenharmony_ci| 名称 | 说明 | 764e41f4b71Sopenharmony_ci| ------ | ------------------------------ | 765e41f4b71Sopenharmony_ci| START | 首部对齐。指定item首部与List首部对齐。 | 766e41f4b71Sopenharmony_ci| CENTER | 居中对齐。指定item主轴方向居中对齐于List。 | 767e41f4b71Sopenharmony_ci| END | 尾部对齐。指定item尾部与List尾部对齐。 | 768e41f4b71Sopenharmony_ci| AUTO | 自动对齐。<br/>若指定item完全处于显示区,不做调整。否则依照滑动距离最短的原则,将指定item首部对齐或尾部对齐于List,使指定item完全处于显示区。| 769e41f4b71Sopenharmony_ci 770e41f4b71Sopenharmony_ci## ScrollToIndexOptions<sup>12+</sup>对象说明 771e41f4b71Sopenharmony_ci 772e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 773e41f4b71Sopenharmony_ci 774e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 775e41f4b71Sopenharmony_ci 776e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 777e41f4b71Sopenharmony_ci| ----- | ------ | ------ | ----------------- | 778e41f4b71Sopenharmony_ci| extraOffset | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否 | 滑动到指定Index的额外偏移量。 | 779e41f4b71Sopenharmony_ci 780e41f4b71Sopenharmony_ci## ScrollPageOptions<sup>12+</sup>对象说明 781e41f4b71Sopenharmony_ci 782e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 783e41f4b71Sopenharmony_ci 784e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 785e41f4b71Sopenharmony_ci 786e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 787e41f4b71Sopenharmony_ci| --------- | -------- | ---- | ------------------------------------------------------------ | 788e41f4b71Sopenharmony_ci| next | boolean | 是 | 是否向下翻页。true表示向下翻页,false表示向上翻页。 | 789e41f4b71Sopenharmony_ci| animation | boolean | 否 | 是否开启翻页动画效果。true有动画,false无动画。<br />默认值:false。 | 790e41f4b71Sopenharmony_ci 791e41f4b71Sopenharmony_ci## OffsetOptions<sup>12+</sup>对象说明 792e41f4b71Sopenharmony_ci 793e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 794e41f4b71Sopenharmony_ci 795e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 796e41f4b71Sopenharmony_ci 797e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 798e41f4b71Sopenharmony_ci| ----- | ------| ------- | ----------------- | 799e41f4b71Sopenharmony_ci| xOffset | [Dimension](ts-types.md#dimension10) | 否 |水平滑动偏移<br/>默认值:0 | 800e41f4b71Sopenharmony_ci| yOffset | [Dimension](ts-types.md#dimension10) | 否 |垂直滑动偏移<br/>默认值:0| 801e41f4b71Sopenharmony_ci 802e41f4b71Sopenharmony_ci## ScrollEdgeOptions<sup>12+</sup>对象说明 803e41f4b71Sopenharmony_ci 804e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 805e41f4b71Sopenharmony_ci 806e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 807e41f4b71Sopenharmony_ci 808e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 809e41f4b71Sopenharmony_ci| --------- | -------- | ---- | ------------------------------------------------------------ | 810e41f4b71Sopenharmony_ci| velocity | number | 否 | 设置滚动到容器边缘的固定速度。如果设置小于等于0的值,参数不生效。<br/>默认值:0<br/> 单位: vp/s | 811e41f4b71Sopenharmony_ci 812e41f4b71Sopenharmony_ci## 示例 813e41f4b71Sopenharmony_ci### 示例1 814e41f4b71Sopenharmony_ci该示例展示了Scroll组件部分属性和scroller控制器的使用。 815e41f4b71Sopenharmony_ci 816e41f4b71Sopenharmony_ci```ts 817e41f4b71Sopenharmony_ci// xxx.ets 818e41f4b71Sopenharmony_ciimport { curves } from '@kit.ArkUI' 819e41f4b71Sopenharmony_ci 820e41f4b71Sopenharmony_ci@Entry 821e41f4b71Sopenharmony_ci@Component 822e41f4b71Sopenharmony_cistruct ScrollExample { 823e41f4b71Sopenharmony_ci scroller: Scroller = new Scroller() 824e41f4b71Sopenharmony_ci private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 825e41f4b71Sopenharmony_ci 826e41f4b71Sopenharmony_ci build() { 827e41f4b71Sopenharmony_ci Stack({ alignContent: Alignment.TopStart }) { 828e41f4b71Sopenharmony_ci Scroll(this.scroller) { 829e41f4b71Sopenharmony_ci Column() { 830e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 831e41f4b71Sopenharmony_ci Text(item.toString()) 832e41f4b71Sopenharmony_ci .width('90%') 833e41f4b71Sopenharmony_ci .height(150) 834e41f4b71Sopenharmony_ci .backgroundColor(0xFFFFFF) 835e41f4b71Sopenharmony_ci .borderRadius(15) 836e41f4b71Sopenharmony_ci .fontSize(16) 837e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 838e41f4b71Sopenharmony_ci .margin({ top: 10 }) 839e41f4b71Sopenharmony_ci }, (item: string) => item) 840e41f4b71Sopenharmony_ci }.width('100%') 841e41f4b71Sopenharmony_ci } 842e41f4b71Sopenharmony_ci .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 843e41f4b71Sopenharmony_ci .scrollBar(BarState.On) // 滚动条常驻显示 844e41f4b71Sopenharmony_ci .scrollBarColor(Color.Gray) // 滚动条颜色 845e41f4b71Sopenharmony_ci .scrollBarWidth(10) // 滚动条宽度 846e41f4b71Sopenharmony_ci .friction(0.6) 847e41f4b71Sopenharmony_ci .edgeEffect(EdgeEffect.None) 848e41f4b71Sopenharmony_ci .onWillScroll((xOffset: number, yOffset: number, scrollState: ScrollState) => { 849e41f4b71Sopenharmony_ci console.info(xOffset + ' ' + yOffset) 850e41f4b71Sopenharmony_ci }) 851e41f4b71Sopenharmony_ci .onScrollEdge((side: Edge) => { 852e41f4b71Sopenharmony_ci console.info('To the edge') 853e41f4b71Sopenharmony_ci }) 854e41f4b71Sopenharmony_ci .onScrollStop(() => { 855e41f4b71Sopenharmony_ci console.info('Scroll Stop') 856e41f4b71Sopenharmony_ci }) 857e41f4b71Sopenharmony_ci 858e41f4b71Sopenharmony_ci Button('scroll 150') 859e41f4b71Sopenharmony_ci .height('5%') 860e41f4b71Sopenharmony_ci .onClick(() => { // 点击后下滑指定距离150.0vp 861e41f4b71Sopenharmony_ci this.scroller.scrollBy(0, 150) 862e41f4b71Sopenharmony_ci }) 863e41f4b71Sopenharmony_ci .margin({ top: 10, left: 20 }) 864e41f4b71Sopenharmony_ci Button('scroll 100') 865e41f4b71Sopenharmony_ci .height('5%') 866e41f4b71Sopenharmony_ci .onClick(() => { // 点击后滑动到指定位置,即下滑100.0vp的距离 867e41f4b71Sopenharmony_ci const yOffset: number = this.scroller.currentOffset().yOffset; 868e41f4b71Sopenharmony_ci this.scroller.scrollTo({ xOffset: 0, yOffset: yOffset + 100 }) 869e41f4b71Sopenharmony_ci }) 870e41f4b71Sopenharmony_ci .margin({ top: 60, left: 20 }) 871e41f4b71Sopenharmony_ci Button('scroll 100') 872e41f4b71Sopenharmony_ci .height('5%') 873e41f4b71Sopenharmony_ci .onClick(() => { // 点击后滑动到指定位置,即下滑100.0vp的距离,滑动过程配置有动画 874e41f4b71Sopenharmony_ci let curve = curves.interpolatingSpring(10, 1, 228, 30) //创建一个阶梯曲线 875e41f4b71Sopenharmony_ci const yOffset: number = this.scroller.currentOffset().yOffset; 876e41f4b71Sopenharmony_ci this.scroller.scrollTo({ xOffset: 0, yOffset: yOffset + 100, animation: { duration: 1000, curve: curve } }) 877e41f4b71Sopenharmony_ci }) 878e41f4b71Sopenharmony_ci .margin({ top: 110, left: 20 }) 879e41f4b71Sopenharmony_ci Button('back top') 880e41f4b71Sopenharmony_ci .height('5%') 881e41f4b71Sopenharmony_ci .onClick(() => { // 点击后回到顶部 882e41f4b71Sopenharmony_ci this.scroller.scrollEdge(Edge.Top) 883e41f4b71Sopenharmony_ci }) 884e41f4b71Sopenharmony_ci .margin({ top: 160, left: 20 }) 885e41f4b71Sopenharmony_ci Button('next page') 886e41f4b71Sopenharmony_ci .height('5%') 887e41f4b71Sopenharmony_ci .onClick(() => { // 点击后滑到下一页 888e41f4b71Sopenharmony_ci this.scroller.scrollPage({ next: true ,animation: true }) 889e41f4b71Sopenharmony_ci }) 890e41f4b71Sopenharmony_ci .margin({ top: 210, left: 20 }) 891e41f4b71Sopenharmony_ci }.width('100%').height('100%').backgroundColor(0xDCDCDC) 892e41f4b71Sopenharmony_ci } 893e41f4b71Sopenharmony_ci} 894e41f4b71Sopenharmony_ci``` 895e41f4b71Sopenharmony_ci 896e41f4b71Sopenharmony_ci 897e41f4b71Sopenharmony_ci 898e41f4b71Sopenharmony_ci### 示例2 899e41f4b71Sopenharmony_ci该示例使用onScrollFrameBegin事件实现了内层List组件和外层Scroll组件的嵌套滚动。 900e41f4b71Sopenharmony_ci```ts 901e41f4b71Sopenharmony_ciimport { LengthMetrics } from '@kit.ArkUI' 902e41f4b71Sopenharmony_ci 903e41f4b71Sopenharmony_ci@Entry 904e41f4b71Sopenharmony_ci@Component 905e41f4b71Sopenharmony_cistruct NestedScroll { 906e41f4b71Sopenharmony_ci @State listPosition: number = 0; // 0代表滚动到List顶部,1代表中间值,2代表滚动到List底部。 907e41f4b71Sopenharmony_ci private arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 908e41f4b71Sopenharmony_ci private scrollerForScroll: Scroller = new Scroller() 909e41f4b71Sopenharmony_ci private scrollerForList: Scroller = new Scroller() 910e41f4b71Sopenharmony_ci 911e41f4b71Sopenharmony_ci build() { 912e41f4b71Sopenharmony_ci Flex() { 913e41f4b71Sopenharmony_ci Scroll(this.scrollerForScroll) { 914e41f4b71Sopenharmony_ci Column() { 915e41f4b71Sopenharmony_ci Text("Scroll Area") 916e41f4b71Sopenharmony_ci .width("100%") 917e41f4b71Sopenharmony_ci .height("40%") 918e41f4b71Sopenharmony_ci .backgroundColor(0X330000FF) 919e41f4b71Sopenharmony_ci .fontSize(16) 920e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 921e41f4b71Sopenharmony_ci .onClick(() => { 922e41f4b71Sopenharmony_ci this.scrollerForList.scrollToIndex(5, false, ScrollAlign.START, { extraOffset: LengthMetrics.vp(5) }) 923e41f4b71Sopenharmony_ci }) 924e41f4b71Sopenharmony_ci 925e41f4b71Sopenharmony_ci List({ space: 20, scroller: this.scrollerForList }) { 926e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 927e41f4b71Sopenharmony_ci ListItem() { 928e41f4b71Sopenharmony_ci Text("ListItem" + item) 929e41f4b71Sopenharmony_ci .width("100%") 930e41f4b71Sopenharmony_ci .height("100%") 931e41f4b71Sopenharmony_ci .borderRadius(15) 932e41f4b71Sopenharmony_ci .fontSize(16) 933e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 934e41f4b71Sopenharmony_ci .backgroundColor(Color.White) 935e41f4b71Sopenharmony_ci }.width("100%").height(100) 936e41f4b71Sopenharmony_ci }, (item: string) => item) 937e41f4b71Sopenharmony_ci } 938e41f4b71Sopenharmony_ci .width("100%") 939e41f4b71Sopenharmony_ci .height("50%") 940e41f4b71Sopenharmony_ci .edgeEffect(EdgeEffect.None) 941e41f4b71Sopenharmony_ci .friction(0.6) 942e41f4b71Sopenharmony_ci .onReachStart(() => { 943e41f4b71Sopenharmony_ci this.listPosition = 0 944e41f4b71Sopenharmony_ci }) 945e41f4b71Sopenharmony_ci .onReachEnd(() => { 946e41f4b71Sopenharmony_ci this.listPosition = 2 947e41f4b71Sopenharmony_ci }) 948e41f4b71Sopenharmony_ci .onScrollFrameBegin((offset: number) => { 949e41f4b71Sopenharmony_ci if ((this.listPosition == 0 && offset <= 0) || (this.listPosition == 2 && offset >= 0)) { 950e41f4b71Sopenharmony_ci this.scrollerForScroll.scrollBy(0, offset) 951e41f4b71Sopenharmony_ci return { offsetRemain: 0 } 952e41f4b71Sopenharmony_ci } 953e41f4b71Sopenharmony_ci this.listPosition = 1 954e41f4b71Sopenharmony_ci return { offsetRemain: offset }; 955e41f4b71Sopenharmony_ci }) 956e41f4b71Sopenharmony_ci 957e41f4b71Sopenharmony_ci Text("Scroll Area") 958e41f4b71Sopenharmony_ci .width("100%") 959e41f4b71Sopenharmony_ci .height("40%") 960e41f4b71Sopenharmony_ci .backgroundColor(0X330000FF) 961e41f4b71Sopenharmony_ci .fontSize(16) 962e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 963e41f4b71Sopenharmony_ci } 964e41f4b71Sopenharmony_ci } 965e41f4b71Sopenharmony_ci .width("100%").height("100%") 966e41f4b71Sopenharmony_ci }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding(20) 967e41f4b71Sopenharmony_ci } 968e41f4b71Sopenharmony_ci} 969e41f4b71Sopenharmony_ci``` 970e41f4b71Sopenharmony_ci 971e41f4b71Sopenharmony_ci 972e41f4b71Sopenharmony_ci 973e41f4b71Sopenharmony_ci### 示例3 974e41f4b71Sopenharmony_ci该示例使用nestedScroll属性实现了内层List组件和外层Scroll组件的嵌套滚动。 975e41f4b71Sopenharmony_ci```ts 976e41f4b71Sopenharmony_ci@Entry 977e41f4b71Sopenharmony_ci@Component 978e41f4b71Sopenharmony_cistruct StickyNestedScroll { 979e41f4b71Sopenharmony_ci @State arr: number[] = [] 980e41f4b71Sopenharmony_ci 981e41f4b71Sopenharmony_ci @Styles 982e41f4b71Sopenharmony_ci listCard() { 983e41f4b71Sopenharmony_ci .backgroundColor(Color.White) 984e41f4b71Sopenharmony_ci .height(72) 985e41f4b71Sopenharmony_ci .width("100%") 986e41f4b71Sopenharmony_ci .borderRadius(12) 987e41f4b71Sopenharmony_ci } 988e41f4b71Sopenharmony_ci 989e41f4b71Sopenharmony_ci build() { 990e41f4b71Sopenharmony_ci Scroll() { 991e41f4b71Sopenharmony_ci Column() { 992e41f4b71Sopenharmony_ci Text("Scroll Area") 993e41f4b71Sopenharmony_ci .width("100%") 994e41f4b71Sopenharmony_ci .height("40%") 995e41f4b71Sopenharmony_ci .backgroundColor('#0080DC') 996e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 997e41f4b71Sopenharmony_ci Tabs({ barPosition: BarPosition.Start }) { 998e41f4b71Sopenharmony_ci TabContent() { 999e41f4b71Sopenharmony_ci List({ space: 10 }) { 1000e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 1001e41f4b71Sopenharmony_ci ListItem() { 1002e41f4b71Sopenharmony_ci Text("item" + item) 1003e41f4b71Sopenharmony_ci .fontSize(16) 1004e41f4b71Sopenharmony_ci }.listCard() 1005e41f4b71Sopenharmony_ci }, (item: string) => item) 1006e41f4b71Sopenharmony_ci }.width("100%") 1007e41f4b71Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) 1008e41f4b71Sopenharmony_ci .nestedScroll({ 1009e41f4b71Sopenharmony_ci scrollForward: NestedScrollMode.PARENT_FIRST, 1010e41f4b71Sopenharmony_ci scrollBackward: NestedScrollMode.SELF_FIRST 1011e41f4b71Sopenharmony_ci }) 1012e41f4b71Sopenharmony_ci }.tabBar("Tab1") 1013e41f4b71Sopenharmony_ci 1014e41f4b71Sopenharmony_ci TabContent() { 1015e41f4b71Sopenharmony_ci }.tabBar("Tab2") 1016e41f4b71Sopenharmony_ci } 1017e41f4b71Sopenharmony_ci .vertical(false) 1018e41f4b71Sopenharmony_ci .height("100%") 1019e41f4b71Sopenharmony_ci }.width("100%") 1020e41f4b71Sopenharmony_ci } 1021e41f4b71Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) 1022e41f4b71Sopenharmony_ci .friction(0.6) 1023e41f4b71Sopenharmony_ci .backgroundColor('#DCDCDC') 1024e41f4b71Sopenharmony_ci .scrollBar(BarState.Off) 1025e41f4b71Sopenharmony_ci .width('100%') 1026e41f4b71Sopenharmony_ci .height('100%') 1027e41f4b71Sopenharmony_ci } 1028e41f4b71Sopenharmony_ci 1029e41f4b71Sopenharmony_ci aboutToAppear() { 1030e41f4b71Sopenharmony_ci for (let i = 0; i < 30; i++) { 1031e41f4b71Sopenharmony_ci this.arr.push(i) 1032e41f4b71Sopenharmony_ci } 1033e41f4b71Sopenharmony_ci } 1034e41f4b71Sopenharmony_ci} 1035e41f4b71Sopenharmony_ci``` 1036e41f4b71Sopenharmony_ci 1037e41f4b71Sopenharmony_ci### 示例4 1038e41f4b71Sopenharmony_ci该示例实现了Scroll组件的限位滚动。 1039e41f4b71Sopenharmony_ci```ts 1040e41f4b71Sopenharmony_ci@Entry 1041e41f4b71Sopenharmony_ci@Component 1042e41f4b71Sopenharmony_cistruct Index { 1043e41f4b71Sopenharmony_ci scroller: Scroller = new Scroller; 1044e41f4b71Sopenharmony_ci private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] 1045e41f4b71Sopenharmony_ci build() { 1046e41f4b71Sopenharmony_ci Scroll(this.scroller) { 1047e41f4b71Sopenharmony_ci Column() { 1048e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 1049e41f4b71Sopenharmony_ci Text(item.toString()) 1050e41f4b71Sopenharmony_ci .width('90%') 1051e41f4b71Sopenharmony_ci .height(200) 1052e41f4b71Sopenharmony_ci .backgroundColor(0xFFFFFF) 1053e41f4b71Sopenharmony_ci .borderWidth(1) 1054e41f4b71Sopenharmony_ci .borderColor(Color.Black) 1055e41f4b71Sopenharmony_ci .borderRadius(15) 1056e41f4b71Sopenharmony_ci .fontSize(16) 1057e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 1058e41f4b71Sopenharmony_ci }, (item: string) => item) 1059e41f4b71Sopenharmony_ci }.width('100%').backgroundColor(0xDCDCDC) 1060e41f4b71Sopenharmony_ci } 1061e41f4b71Sopenharmony_ci .backgroundColor(Color.Yellow) 1062e41f4b71Sopenharmony_ci .height('100%') 1063e41f4b71Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) 1064e41f4b71Sopenharmony_ci .scrollSnap({snapAlign:ScrollSnapAlign.START, snapPagination:400, enableSnapToStart:true, enableSnapToEnd:true}) 1065e41f4b71Sopenharmony_ci } 1066e41f4b71Sopenharmony_ci} 1067e41f4b71Sopenharmony_ci``` 1068e41f4b71Sopenharmony_ci 1069e41f4b71Sopenharmony_ci 1070e41f4b71Sopenharmony_ci### 示例5 1071e41f4b71Sopenharmony_ci该示例通过scroller控制器的Fling接口触发Scroll组件的惯性滚动。 1072e41f4b71Sopenharmony_ci```ts 1073e41f4b71Sopenharmony_ci@Entry 1074e41f4b71Sopenharmony_ci@Component 1075e41f4b71Sopenharmony_ci//滚动控制器新增按给定速度执行惯性滚动的函数fling 1076e41f4b71Sopenharmony_cistruct ListExample { 1077e41f4b71Sopenharmony_ci private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 1078e41f4b71Sopenharmony_ci scrollerForList: Scroller = new Scroller() 1079e41f4b71Sopenharmony_ci build() { 1080e41f4b71Sopenharmony_ci Column() { 1081e41f4b71Sopenharmony_ci Button('Fling-1000') 1082e41f4b71Sopenharmony_ci .height('5%') 1083e41f4b71Sopenharmony_ci .onClick(() => { 1084e41f4b71Sopenharmony_ci this.scrollerForList.fling(-1000) 1085e41f4b71Sopenharmony_ci }) 1086e41f4b71Sopenharmony_ci Button('Fling3000') 1087e41f4b71Sopenharmony_ci .height('5%') 1088e41f4b71Sopenharmony_ci .onClick(() => { 1089e41f4b71Sopenharmony_ci this.scrollerForList.fling(3000) 1090e41f4b71Sopenharmony_ci }) 1091e41f4b71Sopenharmony_ci List({ space: 20, initialIndex: 0, scroller: this.scrollerForList }) { 1092e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 1093e41f4b71Sopenharmony_ci ListItem() { 1094e41f4b71Sopenharmony_ci Text('' + item) 1095e41f4b71Sopenharmony_ci .width('100%').height(100).fontSize(16) 1096e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF) 1097e41f4b71Sopenharmony_ci } 1098e41f4b71Sopenharmony_ci }, (item: string) => item) 1099e41f4b71Sopenharmony_ci } 1100e41f4b71Sopenharmony_ci .listDirection(Axis.Vertical) // 排列方向 1101e41f4b71Sopenharmony_ci .scrollBar(BarState.Off) 1102e41f4b71Sopenharmony_ci .friction(0.9) 1103e41f4b71Sopenharmony_ci .divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线 1104e41f4b71Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring 1105e41f4b71Sopenharmony_ci .width('90%') 1106e41f4b71Sopenharmony_ci } 1107e41f4b71Sopenharmony_ci .width('100%') 1108e41f4b71Sopenharmony_ci .height('100%') 1109e41f4b71Sopenharmony_ci .backgroundColor(0xDCDCDC) 1110e41f4b71Sopenharmony_ci .padding({ top: 5 }) 1111e41f4b71Sopenharmony_ci } 1112e41f4b71Sopenharmony_ci} 1113e41f4b71Sopenharmony_ci``` 1114e41f4b71Sopenharmony_ci 1115e41f4b71Sopenharmony_ci 1116e41f4b71Sopenharmony_ci 1117e41f4b71Sopenharmony_ci### 示例6 1118e41f4b71Sopenharmony_ci该示例实现了按速度700vp/s向Scroll下边缘滚动。 1119e41f4b71Sopenharmony_ci 1120e41f4b71Sopenharmony_ci```ts 1121e41f4b71Sopenharmony_ci// xxx.ets 1122e41f4b71Sopenharmony_ci@Entry 1123e41f4b71Sopenharmony_ci@Component 1124e41f4b71Sopenharmony_cistruct ScrollExample { 1125e41f4b71Sopenharmony_ci scroller: Scroller = new Scroller() 1126e41f4b71Sopenharmony_ci private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 1127e41f4b71Sopenharmony_ci 1128e41f4b71Sopenharmony_ci build() { 1129e41f4b71Sopenharmony_ci Stack({ alignContent: Alignment.TopStart }) { 1130e41f4b71Sopenharmony_ci Scroll(this.scroller) { 1131e41f4b71Sopenharmony_ci Column() { 1132e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 1133e41f4b71Sopenharmony_ci Text(item.toString()) 1134e41f4b71Sopenharmony_ci .width('90%') 1135e41f4b71Sopenharmony_ci .height(150) 1136e41f4b71Sopenharmony_ci .backgroundColor(0xFFFFFF) 1137e41f4b71Sopenharmony_ci .borderRadius(15) 1138e41f4b71Sopenharmony_ci .fontSize(16) 1139e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 1140e41f4b71Sopenharmony_ci .margin({ top: 10 }) 1141e41f4b71Sopenharmony_ci }, (item: string) => item) 1142e41f4b71Sopenharmony_ci }.width('100%') 1143e41f4b71Sopenharmony_ci } 1144e41f4b71Sopenharmony_ci .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 1145e41f4b71Sopenharmony_ci .scrollBar(BarState.On) // 滚动条常驻显示 1146e41f4b71Sopenharmony_ci .scrollBarColor(Color.Gray) // 滚动条颜色 1147e41f4b71Sopenharmony_ci .scrollBarWidth(10) // 滚动条宽度 1148e41f4b71Sopenharmony_ci .friction(0.6) 1149e41f4b71Sopenharmony_ci .edgeEffect(EdgeEffect.None) 1150e41f4b71Sopenharmony_ci .onWillScroll((xOffset: number, yOffset: number, scrollState: ScrollState) => { 1151e41f4b71Sopenharmony_ci console.info(xOffset + ' ' + yOffset) 1152e41f4b71Sopenharmony_ci }) 1153e41f4b71Sopenharmony_ci .onScrollEdge((side: Edge) => { 1154e41f4b71Sopenharmony_ci console.info('To the edge') 1155e41f4b71Sopenharmony_ci }) 1156e41f4b71Sopenharmony_ci .onScrollStop(() => { 1157e41f4b71Sopenharmony_ci console.info('Scroll Stop') 1158e41f4b71Sopenharmony_ci }) 1159e41f4b71Sopenharmony_ci 1160e41f4b71Sopenharmony_ci Button('scroll to bottom 700') 1161e41f4b71Sopenharmony_ci .height('5%') 1162e41f4b71Sopenharmony_ci .onClick(() => { // 点击后滑到下边缘,速度值是700vp/s 1163e41f4b71Sopenharmony_ci this.scroller.scrollEdge(Edge.Bottom, { velocity: 700 }) 1164e41f4b71Sopenharmony_ci }) 1165e41f4b71Sopenharmony_ci .margin({ top: 100, left: 20 }) 1166e41f4b71Sopenharmony_ci }.width('100%').height('100%').backgroundColor(0xDCDCDC) 1167e41f4b71Sopenharmony_ci } 1168e41f4b71Sopenharmony_ci} 1169e41f4b71Sopenharmony_ci``` 1170e41f4b71Sopenharmony_ci 1171e41f4b71Sopenharmony_ci 1172e41f4b71Sopenharmony_ci### 示例7 1173e41f4b71Sopenharmony_ci该示例展示了如何获得List组件的子组件索引 1174e41f4b71Sopenharmony_ci 1175e41f4b71Sopenharmony_ci```ts 1176e41f4b71Sopenharmony_ci// xxx.ets 1177e41f4b71Sopenharmony_ci@Entry 1178e41f4b71Sopenharmony_ci@Component 1179e41f4b71Sopenharmony_cistruct ListExample { 1180e41f4b71Sopenharmony_ci private arr: number[] = [] 1181e41f4b71Sopenharmony_ci private scroller: ListScroller = new ListScroller() 1182e41f4b71Sopenharmony_ci @State listSpace: number = 10 1183e41f4b71Sopenharmony_ci @State listChildrenSize: ChildrenMainSize = new ChildrenMainSize(100) 1184e41f4b71Sopenharmony_ci @State listIndex: number = -1 1185e41f4b71Sopenharmony_ci @State mess:string = "null" 1186e41f4b71Sopenharmony_ci @State itemBackgroundColorArr: boolean[] = [false] 1187e41f4b71Sopenharmony_ci aboutToAppear(){ 1188e41f4b71Sopenharmony_ci // 初始化数据源。 1189e41f4b71Sopenharmony_ci for (let i = 0; i < 10; i++) { 1190e41f4b71Sopenharmony_ci this.arr.push(i) 1191e41f4b71Sopenharmony_ci } 1192e41f4b71Sopenharmony_ci this.listChildrenSize.splice(0, 5, [100, 100, 100, 100, 100]) 1193e41f4b71Sopenharmony_ci } 1194e41f4b71Sopenharmony_ci build() { 1195e41f4b71Sopenharmony_ci Column() { 1196e41f4b71Sopenharmony_ci List({ space: this.listSpace, initialIndex: 4, scroller: this.scroller }) { 1197e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 1198e41f4b71Sopenharmony_ci ListItem() { 1199e41f4b71Sopenharmony_ci Text('item-' + item) 1200e41f4b71Sopenharmony_ci .height( item < 5 ? 100 : this.listChildrenSize.childDefaultSize) 1201e41f4b71Sopenharmony_ci .width('90%') 1202e41f4b71Sopenharmony_ci .fontSize(16) 1203e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 1204e41f4b71Sopenharmony_ci .borderRadius(10) 1205e41f4b71Sopenharmony_ci .backgroundColor( this.itemBackgroundColorArr[item] ? 0x68B4FF: 0xFFFFFF) 1206e41f4b71Sopenharmony_ci } 1207e41f4b71Sopenharmony_ci }, (item: string) => item) 1208e41f4b71Sopenharmony_ci } 1209e41f4b71Sopenharmony_ci .backgroundColor(Color.Gray) 1210e41f4b71Sopenharmony_ci .layoutWeight(1) 1211e41f4b71Sopenharmony_ci .scrollBar(BarState.On) 1212e41f4b71Sopenharmony_ci .childrenMainSize(this.listChildrenSize) 1213e41f4b71Sopenharmony_ci .alignListItem(ListItemAlign.Center) 1214e41f4b71Sopenharmony_ci .gesture( 1215e41f4b71Sopenharmony_ci PanGesture() 1216e41f4b71Sopenharmony_ci .onActionUpdate((event: GestureEvent) => { 1217e41f4b71Sopenharmony_ci if (event.fingerList[0] != undefined && event.fingerList[0].localX != undefined && event.fingerList[0].localY != undefined) { 1218e41f4b71Sopenharmony_ci this.listIndex = this.scroller.getItemIndex(event.fingerList[0].localX, event.fingerList[0].localY) 1219e41f4b71Sopenharmony_ci this.itemBackgroundColorArr[this.listIndex] = true; 1220e41f4b71Sopenharmony_ci } 1221e41f4b71Sopenharmony_ci }) 1222e41f4b71Sopenharmony_ci ) 1223e41f4b71Sopenharmony_ci .gesture( 1224e41f4b71Sopenharmony_ci TapGesture({ count: 1 }) 1225e41f4b71Sopenharmony_ci .onAction((event: GestureEvent) => { 1226e41f4b71Sopenharmony_ci if (event) { 1227e41f4b71Sopenharmony_ci this.itemBackgroundColorArr.splice(0,this.itemBackgroundColorArr.length); 1228e41f4b71Sopenharmony_ci } 1229e41f4b71Sopenharmony_ci }) 1230e41f4b71Sopenharmony_ci ) 1231e41f4b71Sopenharmony_ci 1232e41f4b71Sopenharmony_ci Text('您当前位置Item索引为:'+ this.listIndex) 1233e41f4b71Sopenharmony_ci .fontColor(Color.Red) 1234e41f4b71Sopenharmony_ci .height(50) 1235e41f4b71Sopenharmony_ci } 1236e41f4b71Sopenharmony_ci } 1237e41f4b71Sopenharmony_ci} 1238e41f4b71Sopenharmony_ci``` 1239e41f4b71Sopenharmony_ci 1240e41f4b71Sopenharmony_ci 1241e41f4b71Sopenharmony_ci 1242e41f4b71Sopenharmony_ci### 示例8 1243e41f4b71Sopenharmony_ci该示例实现了Scroll组件开启边缘渐隐效果并设置边缘渐隐长度 1244e41f4b71Sopenharmony_ci 1245e41f4b71Sopenharmony_ci```ts 1246e41f4b71Sopenharmony_ci// xxx.ets 1247e41f4b71Sopenharmony_ciimport { LengthMetrics } from '@kit.ArkUI' 1248e41f4b71Sopenharmony_ci@Entry 1249e41f4b71Sopenharmony_ci@Component 1250e41f4b71Sopenharmony_cistruct ScrollExample { 1251e41f4b71Sopenharmony_ci scroller: Scroller = new Scroller() 1252e41f4b71Sopenharmony_ci private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 1253e41f4b71Sopenharmony_ci 1254e41f4b71Sopenharmony_ci build() { 1255e41f4b71Sopenharmony_ci Stack({ alignContent: Alignment.TopStart }) { 1256e41f4b71Sopenharmony_ci Scroll(this.scroller) { 1257e41f4b71Sopenharmony_ci Column() { 1258e41f4b71Sopenharmony_ci ForEach(this.arr, (item: number) => { 1259e41f4b71Sopenharmony_ci Text(item.toString()) 1260e41f4b71Sopenharmony_ci .width('90%') 1261e41f4b71Sopenharmony_ci .height(150) 1262e41f4b71Sopenharmony_ci .backgroundColor(0xFFFFFF) 1263e41f4b71Sopenharmony_ci .borderRadius(15) 1264e41f4b71Sopenharmony_ci .fontSize(16) 1265e41f4b71Sopenharmony_ci .textAlign(TextAlign.Center) 1266e41f4b71Sopenharmony_ci .margin({ top: 10 }) 1267e41f4b71Sopenharmony_ci }, (item: string) => item) 1268e41f4b71Sopenharmony_ci }.width('100%') 1269e41f4b71Sopenharmony_ci } 1270e41f4b71Sopenharmony_ci .fadingEdge(true,{fadingEdgeLength:LengthMetrics.vp(80)}) 1271e41f4b71Sopenharmony_ci 1272e41f4b71Sopenharmony_ci 1273e41f4b71Sopenharmony_ci 1274e41f4b71Sopenharmony_ci }.width('100%').height('100%').backgroundColor(0xDCDCDC) 1275e41f4b71Sopenharmony_ci } 1276e41f4b71Sopenharmony_ci} 1277e41f4b71Sopenharmony_ci``` 1278e41f4b71Sopenharmony_ci 1279e41f4b71Sopenharmony_ci