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)&nbsp;\|&nbsp;number&nbsp;\|&nbsp;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&nbsp;\|&nbsp;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&nbsp;\|&nbsp;[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)&nbsp;\|&nbsp;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.None251e41f4b71Sopenharmony_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.None433e41f4b71Sopenharmony_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&nbsp;\|&nbsp;string                                   | 是   | 水平滑动偏移。<br/>**说明:** <br/>该参数值不支持设置百分比。<br/>当值小于0时,不带动画的滚动,按0处理。带动画的滚动,默认滚动到起始位置后停止,可通过设置animation参数,使滚动在越界时启动回弹动画。<br/>仅滚动轴为x轴时生效。 |
494e41f4b71Sopenharmony_ci| yOffset   | number&nbsp;\|&nbsp;string                                   | 是   | 垂直滑动偏移。<br/>**说明:** <br/>该参数值不支持设置百分比。<br/>当值小于0时,不带动画的滚动,按0处理。带动画的滚动,默认滚动到起始位置后停止,可通过设置animation参数,使滚动在越界时启动回弹动画。<br/>仅滚动轴为y轴时生效。 |
495e41f4b71Sopenharmony_ci| animation | [ScrollAnimationOptions](#scrollanimationoptions12)<sup>12+</sup>&nbsp;\|&nbsp;boolean<sup>10+ </sup> | 否   | 动画配置。<br/>- ScrollAnimationOptions:&nbsp; 自定义滚动动效。 <br/>- boolean:&nbsp;使能默认弹簧动效。<br/>默认值:<br/>ScrollAnimationOptions: { duration: 1000, curve: Curve.Ease, canOverScroll: false } <br/>boolean:&nbsp;false<br/>**说明:** <br/>当前List、Scroll、Grid、WaterFlow均支持boolean类型和ICurve曲线。<br/>于API12将原来的 {duration?:&nbsp;number, curve?:&nbsp;[Curve](ts-appendix-enums.md#curve)&nbsp;\|&nbsp;[ICurve](../js-apis-curve.md#icurve)<sup>10+ </sup>}&nbsp;抽象为了ScrollAnimationOptions接口,并在其中添加了一个参数canOverScroll。 |
496e41f4b71Sopenharmony_ci
497e41f4b71Sopenharmony_ci
498e41f4b71Sopenharmony_ci### scrollEdge
499e41f4b71Sopenharmony_ci
500e41f4b71Sopenharmony_ciscrollEdge(value: Edge, options?: ScrollEdgeOptions)
501e41f4b71Sopenharmony_ci
502e41f4b71Sopenharmony_ci
503e41f4b71Sopenharmony_ci滚动到容器边缘,不区分滚动轴方向,Edge.TopEdge.Start表现相同,Edge.BottomEdge.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>&nbsp; | [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![zh-cn_image_0000001174104386](figures/zh-cn_image_0000001174104386.gif)
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![NestedScroll](figures/NestedScroll.gif)
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![NestedScroll2](figures/NestedScroll2.gif)
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![NestedScrollSnap](figures/NestedScrollSnap.gif)
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![scroller_fling](figures/scroller_fling.gif)
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![ScrollEdgeAtVelocity](figures/ScrollEdgeAtVelocity.gif)
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![ScrollEdgeAtVelocity](figures/getItemIndex_list.gif)
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![fadingEdge_scroll](figures/fadingEdge_scroll.gif)