• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 滚动组件通用接口
2
3<!--Kit: ArkUI-->
4<!--Subsystem: ArkUI-->
5<!--Owner: @yylong; @zcdqs-->
6<!--Designer: @yylong; @zcdqs-->
7<!--Tester: @liuzhenshuo-->
8<!--Adviser: @HelloCrease-->
9
10滚动组件通用属性和事件目前只支持[List](ts-container-list.md)、[Grid](ts-container-grid.md)、[Scroll](ts-container-scroll.md)和[WaterFlow](ts-container-waterflow.md)组件。
11
12>  **说明:**
13>
14>  本模块从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
15
16## 属性
17
18### scrollBar<sup>11+</sup>
19
20scrollBar(barState: BarState): T
21
22设置滚动条状态。
23
24**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
25
26**系统能力:** SystemCapability.ArkUI.ArkUI.Full
27
28**参数:**
29
30| 参数名   | 类型                                      | 必填 | 说明                                   |
31| -------- | ----------------------------------------- | ---- | -------------------------------------- |
32| barState | [BarState](ts-appendix-enums.md#barstate) | 是   | 滚动条状态。<br/>默认值:List、Grid、Scroll组件默认BarState.Auto,WaterFlow组件默认BarState.Off。 |
33
34**返回值:**
35
36| 类型 | 说明           |
37| --- | -------------- |
38| T | 返回当前滚动组件。 |
39
40### scrollBarColor<sup>11+</sup>
41
42scrollBarColor(color: Color | number | string): T
43
44设置滚动条的颜色。
45
46**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
47
48**系统能力:** SystemCapability.ArkUI.ArkUI.Full
49
50**参数:**
51
52| 参数名 | 类型                                                         | 必填 | 说明           |
53| ------ | ------------------------------------------------------------ | ---- | -------------- |
54| color  | [Color](ts-appendix-enums.md#color)&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string | 是   | 滚动条的颜色。<br/>默认值:'\#182431'(40%不透明度)<br/>number为HEX格式颜色,支持rgb或者argb,示例:0xffffff。string为rgb或者argb格式颜色,示例:'#ffffff'。 |
55
56**返回值:**
57
58| 类型 | 说明           |
59| --- | -------------- |
60| T | 返回当前滚动组件。 |
61
62### scrollBarWidth<sup>11+</sup>
63
64scrollBarWidth(value: number | string): T
65
66设置滚动条的宽度,不支持百分比设置。宽度设置后,滚动条正常状态和按压状态宽度均为滚动条的宽度值。如果滚动条的宽度超过滚动组件主轴方向的高度,则滚动条的宽度会变为默认值。
67
68**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
69
70**系统能力:** SystemCapability.ArkUI.ArkUI.Full
71
72**参数:**
73
74| 参数名 | 类型                       | 必填 | 说明                                      |
75| ------ | -------------------------- | ---- | ----------------------------------------- |
76| value  | number&nbsp;\|&nbsp;string | 是   | 滚动条的宽度。<br/>默认值:4<br/>单位:vp <br/>取值范围:设置为小于0的值时,按默认值处理。设置为0时,不显示滚动条。 |
77
78**返回值:**
79
80| 类型 | 说明           |
81| --- | -------------- |
82| T | 返回当前滚动组件。 |
83
84### edgeEffect<sup>11+</sup>
85
86edgeEffect(edgeEffect: EdgeEffect, options?: EdgeEffectOptions): T
87
88设置边缘滑动效果。
89
90**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
91
92**系统能力:** SystemCapability.ArkUI.ArkUI.Full
93
94**参数:**
95
96| 参数名                | 类型                                              | 必填 | 说明                                                         |
97| --------------------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ |
98| edgeEffect            | [EdgeEffect](ts-appendix-enums.md#edgeeffect)     | 是   | 滚动组件的边缘滑动效果,支持弹簧效果和阴影效果。<br/>默认值:Grid、Scroll、WaterFlow组件默认EdgeEffect.None,List组件默认EdgeEffect.Spring。|
99| options | [EdgeEffectOptions](#edgeeffectoptions11对象说明) | 否   | 组件内容大小小于组件自身时是否开启滑动效果,以及设置边缘效果生效的边缘。设置为{ alwaysEnabled: true }会开启滑动效果,{ alwaysEnabled: false }不开启。<br/>默认值:<br/>List、Grid、WaterFlow组件默认{ alwaysEnabled: false, EffectEdge: EffectEdge.START \| EffectEdge.END },Scroll组件默认{ alwaysEnabled: true, EffectEdge: EffectEdge.START \| EffectEdge.END }。|
100
101**返回值:**
102
103| 类型 | 说明           |
104| --- | -------------- |
105| T | 返回当前滚动组件。 |
106
107### nestedScroll<sup>11+</sup>
108
109nestedScroll(value: NestedScrollOptions): T
110
111设置前后两个方向的嵌套滚动模式,实现与父组件的滚动联动。
112
113**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
114
115**系统能力:** SystemCapability.ArkUI.ArkUI.Full
116
117**参数:**
118
119| 参数名 | 类型                                                  | 必填 | 说明           |
120| ------ | ----------------------------------------------------- | ---- | -------------- |
121| value  | [NestedScrollOptions](#nestedscrolloptions10对象说明) | 是   | 嵌套滚动选项。<br/>默认值:{ scrollForward: NestedScrollMode.SELF_ONLY, scrollBackward: NestedScrollMode.SELF_ONLY } |
122
123**返回值:**
124
125| 类型 | 说明           |
126| --- | -------------- |
127| T | 返回当前滚动组件。 |
128
129### enableScrollInteraction<sup>11+</sup>
130
131enableScrollInteraction(value: boolean): T
132
133设置是否支持滚动手势。
134
135**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
136
137**系统能力:** SystemCapability.ArkUI.ArkUI.Full
138
139**参数:**
140
141| 参数名 | 类型    | 必填 | 说明                                |
142| ------ | ------- | ---- | ----------------------------------- |
143| value  | boolean | 是   | 是否支持滚动手势。设置为true时可以通过手指或者鼠标滚动,设置为false时无法通过手指或者鼠标滚动,但不影响控制器[Scroller](ts-container-scroll.md#scroller)的滚动接口。<br/>默认值:true |
144
145**返回值:**
146
147| 类型 | 说明           |
148| --- | -------------- |
149| T | 返回当前滚动组件。 |
150
151### friction<sup>11+</sup>
152
153friction(value: number | Resource): T
154
155设置摩擦系数,手动划动滚动区域时生效,仅影响惯性滚动过程,对惯性滚动过程中的链式效果有间接影响。设置为小于等于0的值时,按默认值处理。
156
157**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
158
159**系统能力:** SystemCapability.ArkUI.ArkUI.Full
160
161**参数:**
162
163| 参数名 | 类型                                                 | 必填 | 说明                                                      |
164| ------ | ---------------------------------------------------- | ---- | --------------------------------------------------------- |
165| value  | number&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 是   | 摩擦系数。<br/>默认值:非wearable设备为0.6,wearable设备为0.9。<br/>从API version 11开始,非wearable设备默认值为0.7。<br/>从API version 12开始,非wearable设备默认值为0.75。 <br/>取值范围:(0, +∞),设置为小于等于0的值时,按默认值处理。|
166
167**返回值:**
168
169| 类型 | 说明           |
170| --- | -------------- |
171| T | 返回当前滚动组件。 |
172
173### flingSpeedLimit<sup>11+</sup>
174
175flingSpeedLimit(speedLimit: number): T
176
177限制跟手滑动结束后,Fling动效开始时的最大初始速度。
178
179**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
180
181**系统能力:** SystemCapability.ArkUI.ArkUI.Full
182
183**参数:**
184
185| 参数名     | 类型   | 必填 | 说明                            |
186| ---------- | ------ | ---- | ------------------------------- |
187| speedLimit | number | 是   | Fling动效开始时的最大初始速度。<br/>默认值:9000<br/>单位:vp/s <br/>取值范围:(0, +∞),设置为小于等于0的值时,按默认值处理。|
188
189**返回值:**
190
191| 类型 | 说明           |
192| --- | -------------- |
193| T | 返回当前滚动组件。 |
194
195### fadingEdge<sup>14+</sup>
196
197fadingEdge(enabled: Optional&lt;boolean&gt;, options?: FadingEdgeOptions): T
198
199设置是否开启边缘渐隐效果及设置边缘渐隐长度。
200
201> **说明:**
202>
203> fadingEdge是通过设置[overlay](ts-universal-attributes-overlay.md#overlay)属性和[blendMode](ts-universal-attributes-image-effect.md#blendmode11)属性(参数值为BlendMode.SRC_OVERBlendApplyType.OFFSCREEN)实现的。当fadingEdge生效时,会覆盖原组件的.overlay()属性和.blendMode()属性。
204>
205> fadingEdge生效时,建议不在设置fadingEdge属性的组件上设置background相关属性,会影响渐隐的显示效果。
206>
207> fadingEdge生效时,设置fadingEdge属性的组件会裁剪到边界,在该组件上设置clip属性为false不生效。
208
209**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
210
211**系统能力:** SystemCapability.ArkUI.ArkUI.Full
212
213**参数:**
214
215| 参数名  | 类型                                              | 必填 | 说明                                                         |
216| ------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ |
217| enabled | Optional&lt;boolean&gt;                           | 是   | 是否开启边缘渐隐效果。设置为true时开启边缘渐隐效果,设置为false时不开启边缘渐隐效果。<br/>默认值:false |
218| options | [FadingEdgeOptions](#fadingedgeoptions14对象说明) | 否   | 边缘渐隐参数对象。可以通过该对象定义边缘渐隐效果属性,比如设置渐隐长度。<br/>如果设置小于0的值则取默认值,默认长度为32vp。<br/>如果设置的长度超过容器高度的一半时,渐隐长度取容器高度的一半。 |
219
220**返回值:**
221
222| 类型 | 说明           |
223| --- | -------------- |
224| T | 返回当前滚动组件。 |
225
226### clipContent<sup>14+</sup>
227
228clipContent(clip: ContentClipMode | RectShape): T
229
230设置滚动容器的内容层裁剪区域。
231
232**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
233
234**系统能力:** SystemCapability.ArkUI.ArkUI.Full
235
236**参数:**
237
238| 参数名  | 类型                                              | 必填 | 说明                                                         |
239| ------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ |
240| clip | [ContentClipMode](#contentclipmode14枚举说明)&nbsp;\|&nbsp;[RectShape](../js-apis-arkui-shape.md#rectshape)   | 是   | 裁剪只针对滚动容器的内容,即其子节点,背景不受影响。通过RectShape传入自定义矩形区域时仅支持设置宽高和相对于组件左上角的[offset](../js-apis-arkui-shape.md#offset),不支持圆角。<br></div>默认值:Grid、Scroll的默认值为ContentClipMode.BOUNDARY,List、WaterFlow的默认值为ContentClipMode.CONTENT_ONLY。 |
241
242**返回值:**
243
244| 类型 | 说明           |
245| --- | -------------- |
246| T | 返回当前滚动组件。 |
247
248### backToTop<sup>15+</sup>
249
250backToTop(backToTop: boolean): T
251
252设置滚动组件是否支持点击状态栏回到顶部。
253
254支持当前页面的滚动组件收到点击状态栏事件后,通过动画回到顶部。点击状态栏后,后台应用的滚动组件不受影响,不做回到顶部的动作。本属性不受[enableScrollInteraction](#enablescrollinteraction11)设置的影响。
255
256**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。
257
258**系统能力:** SystemCapability.ArkUI.ArkUI.Full
259
260**参数:**
261
262| 参数名 | 类型    | 必填 | 说明                                           |
263| ------ | ------- | ---- | ---------------------------------------------- |
264| backToTop  | boolean | 是   | 设置滚动组件是否支持点击状态栏回到顶部。设置为true支持点击状态栏通过动画回到顶部,设置为false不支持点击状态栏回到顶部。<br/>默认值:<br/>API version 18之前:false。 <br/>API version 18及以后:滚动方向是水平方向时为false,是垂直方向时为true。 |
265
266**返回值:**
267
268| 类型 | 说明           |
269| --- | -------------- |
270| T | 返回当前滚动组件。 |
271
272### scrollBarMargin<sup>20+</sup>
273
274scrollBarMargin(margin: ScrollBarMargin): T
275
276设置滚动条的边距。边距是在滚动条避让圆角距离的基础上计算的,如果滚动条区域小于滚动条的最小长度,则不显示滚动条。
277
278**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
279
280**系统能力:** SystemCapability.ArkUI.ArkUI.Full
281
282**参数:**
283
284| 参数名 | 类型    | 必填 | 说明                                  |
285| ------ | ------- | ---- | ------------------------------------- |
286| margin  | [ScrollBarMargin](ts-types.md#scrollbarmargin20对象说明)  | 是   |滚动条起始、末尾边距。<br/>默认值:{start: LengthMetrics.vp(0), end: LengthMetrics.vp(0)} |
287
288**返回值:**
289
290| 类型 | 说明           |
291| --- | -------------- |
292| T | 返回当前滚动组件。 |
293
294### digitalCrownSensitivity<sup>18+</sup>
295
296digitalCrownSensitivity(sensitivity: Optional\<CrownSensitivity>): T
297
298设置表冠响应事件灵敏度。
299
300组件收到[表冠事件](ts-universal-events-crown.md)的前提是该组件获焦,焦点控制可以通过[focusable](ts-universal-attributes-focus.md#focusable)、[defaultFocus](ts-universal-attributes-focus.md#defaultfocus9)、[focusOnTouch](ts-universal-attributes-focus.md#focusontouch9)进行管理。
301
302**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
303
304**系统能力:** SystemCapability.ArkUI.ArkUI.Full
305
306**参数:**
307
308| 参数名      | 类型                                                         | 必填 | 说明                                                         |
309| ----------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
310| sensitivity | [Optional&lt;CrownSensitivity&gt;](ts-appendix-enums.md#crownsensitivity18) | 是   | 表冠响应灵敏度。<br/>默认值:CrownSensitivity.MEDIUM,响应速度适中。 |
311
312**返回值:**
313
314| 类型 | 说明           |
315| --- | -------------- |
316| T | 返回当前滚动组件。 |
317
318
319## 事件
320
321### onReachStart<sup>11+</sup>
322
323onReachStart(event: () => void): T
324
325滚动组件到达起始位置时触发。
326
327滚动组件初始化时会触发一次,滚动到起始位置时触发一次。边缘效果为弹簧效果时,划动经过起始位置时触发一次,回弹回起始位置时再触发一次。
328
329**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
330
331**系统能力:** SystemCapability.ArkUI.ArkUI.Full
332
333**参数:**
334
335| 参数名 | 类型   | 必填 | 说明                 |
336| ------ | ------ | ---- | -------------------- |
337| event  | () => void | 是   | 滚动组件到达起始位置时的回调。 |
338
339**返回值:**
340
341| 类型 | 说明           |
342| --- | -------------- |
343| T | 返回当前滚动组件。 |
344
345### onReachEnd<sup>11+</sup>
346
347onReachEnd(event: () => void): T
348
349滚动组件到达末尾位置时触发。
350
351滚动组件边缘效果为弹簧效果时,划动经过末尾位置时触发一次,回弹回末尾位置时再触发一次。
352
353**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
354
355**系统能力:** SystemCapability.ArkUI.ArkUI.Full
356
357**参数:**
358
359| 参数名 | 类型   | 必填 | 说明                 |
360| ------ | ------ | ---- | -------------------- |
361| event  | () => void | 是   | 滚动组件到达末尾位置时的回调。 |
362
363**返回值:**
364
365| 类型 | 说明           |
366| --- | -------------- |
367| T | 返回当前滚动组件。 |
368
369### onScrollStart<sup>11+</sup>
370
371onScrollStart(event: () => void): T
372
373滚动开始时触发。手指拖动滚动组件或拖动滚动组件的滚动条触发的滚动开始时,会触发该事件。使用[Scroller](ts-container-scroll.md#scroller)滚动控制器触发的带动画的滚动,动画开始时会触发该事件。
374
375触发该事件的条件:
376
3771. 滚动组件开始滚动时触发,支持键鼠操作等其他触发滚动的输入设置。
378
3792. 通过滚动控制器API接口调用后开始,带过渡动效。
380
381**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
382
383**系统能力:** SystemCapability.ArkUI.ArkUI.Full
384
385**参数:**
386
387| 参数名 | 类型   | 必填 | 说明                 |
388| ------ | ------ | ---- | -------------------- |
389| event  | () => void | 是   | 滚动开始时的回调。 |
390
391**返回值:**
392
393| 类型 | 说明           |
394| --- | -------------- |
395| T | 返回当前滚动组件。 |
396
397### onScrollStop<sup>11+</sup>
398
399onScrollStop(event: () => void): T
400
401滚动停止时触发。手拖动滚动组件或拖动滚动组件的滚动条触发的滚动,手离开屏幕后滚动停止时会触发该事件。使用[Scroller](ts-container-scroll.md#scroller)滚动控制器触发的带动画的滚动,动画停止时会触发该事件。
402
403触发该事件的条件:
404
4051. 滚动组件触发滚动后停止,支持键鼠操作等其他触发滚动的输入设置。
406
4072. 通过调用带过渡动画的滚动控制器API接口,动画停止时。
408
409**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
410
411**系统能力:** SystemCapability.ArkUI.ArkUI.Full
412
413**参数:**
414
415| 参数名 | 类型   | 必填 | 说明                 |
416| ------ | ------ | ---- | -------------------- |
417| event  | () => void | 是   | 滚动停止时的回调。 |
418
419**返回值:**
420
421| 类型 | 说明           |
422| --- | -------------- |
423| T | 返回当前滚动组件。 |
424
425### onWillScroll<sup>12+</sup>
426
427onWillScroll(handler: Optional&lt;OnWillScrollCallback&gt;): T
428
429滚动事件回调,滚动组件滚动前触发。
430
431回调当前帧将要滚动的偏移量和当前滚动状态和滚动操作来源,其中回调的偏移量为计算得到的将要滚动的偏移量值,并非最终实际滚动偏移。可以通过该回调返回值指定滚动组件将要滚动的偏移。[Scroll](./ts-container-scroll.md)组件的[onWillScroll](./ts-container-scroll.md#onwillscroll12)接口的参数类型是[ScrollOnWillScrollCallback](./ts-container-scroll.md#scrollonwillscrollcallback12)。
432
433**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
434
435**系统能力:** SystemCapability.ArkUI.ArkUI.Full
436
437**参数:**
438
439| 参数名 | 类型 | 必填 | 说明 |
440| ------ | ------ | ------ | ------|
441| handler | Optional&lt;[OnWillScrollCallback](#onwillscrollcallback12)&gt; | 是 | 滚动组件滑动前触发的回调。 |
442
443**返回值:**
444
445| 类型 | 说明           |
446| --- | -------------- |
447| T | 返回当前滚动组件。 |
448
449> **说明:**
450>
451> 调用不带动画的ScrollEdge和ScrollToIndex时,不触发onWillScroll。
452
453
454### onDidScroll<sup>12+</sup>
455
456onDidScroll(handler: OnScrollCallback): T
457
458滚动组件滑动时触发,返回当前帧滑动的偏移量和当前滑动状态。
459
460**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。
461
462**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
463
464**系统能力:** SystemCapability.ArkUI.ArkUI.Full
465
466**参数:**
467
468| 参数名 | 类型 | 必填 | 说明 |
469| ------ | ------ | ------ | ------|
470| handler | [OnScrollCallback](#onscrollcallback12) | 是 | 滚动组件滑动时触发的回调。 |
471
472**返回值:**
473
474| 类型 | 说明           |
475| --- | -------------- |
476| T | 返回当前滚动组件。 |
477
478### onScroll<sup>(deprecated)</sup>
479
480onScroll(event: (scrollOffset: number, scrollState: ScrollState) => void): T
481
482滚动组件滑动时触发。
483
484从API version 11开始使用。
485
486从API version 12开始废弃不再使用,Scroll组件的onScroll事件在布局之前触发,建议使用[onWillScroll](#onwillscroll12)替代;List、Grid和WaterFlow组件的onScroll事件在布局之后触发,建议使用[onDidScroll](#ondidscroll12)替代。
487
488**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
489
490**系统能力:** SystemCapability.ArkUI.ArkUI.Full
491
492**参数:**
493
494| 参数名 | 类型 | 必填 | 说明 |
495| ------ | ------ | ------ | ------|
496| event  | (scrollOffset: number, scrollState: [ScrollState](ts-container-list.md#scrollstate枚举说明)) => void | 是 | 滚动组件滑动时的回调。<br/>scrollOffset:每帧滚动的偏移量,滚动组件的内容向上滚动时偏移量为正,向下滚动时偏移量为负。单位vp。<br/>scrollState:当前滑动状态。|
497
498**返回值:**
499
500| 类型 | 说明           |
501| --- | -------------- |
502| T | 返回当前滚动组件。 |
503
504
505### onWillStopDragging<sup>20+</sup>
506
507onWillStopDragging(handler: OnWillStopDraggingCallback): T
508
509滚动组件划动离手时触发,使用鼠标滚轮划动时不会触发。
510
511**卡片能力:** 从API version 20开始,该接口支持在ArkTS卡片中使用。
512
513**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
514
515**系统能力:** SystemCapability.ArkUI.ArkUI.Full
516
517**参数:**
518
519| 参数名  | 类型                                                        | 必填 | 说明                         |
520| ------- | ----------------------------------------------------------- | ---- | ---------------------------- |
521| handler | [OnWillStopDraggingCallback](#onwillstopdraggingcallback20) | 是   | 滚动组件划动离手时触发的回调。 |
522
523**返回值:**
524
525| 类型 | 说明               |
526| ---- | ------------------ |
527| T    | 返回当前滚动组件。 |
528
529
530## ItemDragInfo对象说明
531
532拖拽点信息对象。
533
534**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
535
536**系统能力:** SystemCapability.ArkUI.ArkUI.Full
537
538| 名称         | 类型         | 只读 | 可选 |   说明         |
539| ---------- | ---------- | -- | -- | ---------- |
540| x | number | 否 | 否 |  当前拖拽点的x坐标,单位vp。    |
541| y | number | 否 | 否 |  当前拖拽点的y坐标,单位vp。    |
542
543## NestedScrollOptions<sup>10+</sup>对象说明
544
545[nestedScroll](#nestedscroll11)属性参数对象。
546
547**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
548
549**系统能力:** SystemCapability.ArkUI.ArkUI.Full
550
551| 名称   | 类型  | 只读 | 可选 | 说明              |
552| ----- | ------ | ------ | -- | ----------------- |
553| scrollForward | [NestedScrollMode](ts-appendix-enums.md#nestedscrollmode10) | 否 | 否 | 滚动组件往末尾端滚动时的嵌套滚动选项。 |
554| scrollBackward | [NestedScrollMode](ts-appendix-enums.md#nestedscrollmode10) | 否 | 否 | 滚动组件往起始端滚动时的嵌套滚动选项。 |
555
556## EdgeEffectOptions<sup>11+</sup>对象说明
557
558[edgeEffect](#edgeeffect11)属性参数对象。
559
560**系统能力:** SystemCapability.ArkUI.ArkUI.Full
561
562| 名称   | 类型  | 只读 | 可选 | 说明              |
563| ----- | ------| ------- | -- | ----------------- |
564| alwaysEnabled | boolean | 否 | 否 | 组件内容大小小于组件自身时,设置是否开启滑动效果。设置为true开启滑动效果,设置为false关闭滑动效果。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
565| effectEdge<sup>18+</sup> | number | 否 | 是 | 设置边缘效果生效的边缘。<br/>如果设置[EffectEdge](#effectedge18枚举说明).START表示只有起始边生效。如果设置[EffectEdge](#effectedge18枚举说明).END表示只有末尾边生效。<br/>默认值为[EffectEdge](#effectedge18枚举说明).START \| [EffectEdge](#effectedge18枚举说明).END表示双边同时生效。当设置为其它异常值时,则默认双边同时生效。<br/>如果需要双边都不生效,可将edgeEffect设置为EdgeEffect.None。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
566
567## FadingEdgeOptions<sup>14+</sup>对象说明
568
569[fadingEdge](#fadingedge14)属性边缘渐隐参数对象。
570
571**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
572
573**系统能力:** SystemCapability.ArkUI.ArkUI.Full
574
575| 名称           | 类型                                                         | 只读 | 可选 | 说明                                                         |
576| ---------------- | ------------------------------------------------------------ | ---- | -- | ------------------------------------------------------------ |
577| fadingEdgeLength | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | 是 | 设置边缘渐隐长度。 |
578
579## EffectEdge<sup>18+</sup>枚举说明
580
581表示当前边缘效果要生效的边缘。
582
583**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
584
585**系统能力:** SystemCapability.ArkUI.ArkUI.Full
586
587| 名称  | 值   | 说明         |
588| ----- | ---- | ------------ |
589| START | 1    | 起始边生效。 |
590| END   | 2    | 末尾边生效。 |
591
592## ContentClipMode<sup>14+</sup>枚举说明
593
594表示滚动容器的内容裁剪模式。
595
596**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
597
598**系统能力:** SystemCapability.ArkUI.ArkUI.Full
599
600下图是组件配置了边距属性后的示意图,可理解每种枚举对应的裁剪区域。
601
602![ContentClipMode示意图](figures/ContentClipMode.png)
603
604| 名称     |  值  | 说明                                       |
605| ------ | ------ | ---------------------------------------- |
606| CONTENT_ONLY   |  0  | 按内容区裁剪,对应图中的绿色区域。 |
607| BOUNDARY |  1  | 按组件区域裁剪,对应图中的整个蓝色区域。 |
608| SAFE_AREA  |  2  | 按组件配置的SafeArea区域裁剪,对应图中的整个黄色区域。 |
609
610## OnWillScrollCallback<sup>12+</sup>
611
612type OnWillScrollCallback = (scrollOffset: number, scrollState: ScrollState, scrollSource: ScrollSource) => void | ScrollResult
613
614滚动组件滑动前触发的回调。
615
616**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
617
618**系统能力:** SystemCapability.ArkUI.ArkUI.Full
619
620**参数:**
621
622| 参数名 | 类型 | 必填 | 说明 |
623| ------ | ------ | ------ | ------|
624| scrollOffset | number | 是 | 每帧滑动的偏移量,滚动组件的内容向上滚动时偏移量为正,向下滚动时偏移量为负。<br/>单位vp。 |
625| scrollState | [ScrollState](ts-container-list.md#scrollstate枚举说明) | 是 | 当前滑动状态。 |
626| scrollSource | [ScrollSource](ts-appendix-enums.md#scrollsource12) | 是 | 当前滑动操作的来源。 |
627
628**返回值:**
629
630| 类型                          | 说明                                  |
631| ----------------------------- | ------------------------------------ |
632| void \| [ScrollResult](#scrollresult12对象说明) |  返回ScrollResult时按照开发者指定的偏移量滑动;不返回时按回调参数scrollOffset滑动。  <br/>取值范围:(-∞, +∞)|
633
634## OnScrollCallback<sup>12+</sup>
635
636type OnScrollCallback = (scrollOffset: number, scrollState: ScrollState) => void
637
638滚动组件滑动时触发的回调。
639
640**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。
641
642**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
643
644**系统能力:** SystemCapability.ArkUI.ArkUI.Full
645
646**参数:**
647
648| 参数名 | 类型 | 必填 | 说明 |
649| ------ | ------ | ------ | ------|
650| scrollOffset | number | 是 | 每帧滚动的偏移量,滚动组件的内容向上滚动时偏移量为正,向下滚动时偏移量为负。<br/>单位vp。 |
651| scrollState | [ScrollState](ts-container-list.md#scrollstate枚举说明) | 是 | 当前滑动状态。 |
652
653## ScrollResult<sup>12+</sup>对象说明
654
655[OnWillScrollCallback](#onwillscrollcallback12)返回值对象。
656
657**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
658
659**系统能力:** SystemCapability.ArkUI.ArkUI.Full
660
661| 名称 | 类型 | 只读 | 可选 | 说明 |
662| ------ | ------ | ------ | -- | ------|
663| offsetRemain | number | 否 | 否 | 将要滑动偏移量,单位vp。 |
664
665## ChildrenMainSize<sup>12+</sup>对象说明
666
667维护List组件或ListItemGroup组件的子组件在主轴方向的大小信息,仅支持一对一绑定到List组件或ListItemGroup组件。
668
669**说明:**
670>
671> - 提供的主轴方向大小信息必须与子组件实际在主轴方向的大小一致,子组件在主轴方向大小变化或者增删子组件时都必须通过ChildrenMainSize对象方法通知List组件或ListItemGroup组件。
672
673**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
674
675**系统能力:** SystemCapability.ArkUI.ArkUI.Full
676
677### constructor<sup>12+</sup>
678
679constructor(childDefaultSize: number)
680
681ChildrenMainSize有参构造函数。
682
683**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
684
685**系统能力:** SystemCapability.ArkUI.ArkUI.Full
686
687**参数:**
688
689| 参数名   | 类型                            | 必填   | 说明                   |
690| ---- | ----------------------------- | ---- | -------------------- |
691| childDefaultSize | number | 是    | 子组件在主轴方向的默认大小。<br/>单位:vp<br/>**说明:** <br/>必须是有限的非负数值,否则抛出异常。|
692
693**错误码**:
694
695以下错误码详细介绍请参考[通用错误码](../../errorcode-universal.md)。
696
697| 错误码ID | 错误信息 |
698| ------- | -------- |
699| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.   |
700
701
702### childDefaultSize<sup>12+</sup>
703
704set childDefaultSize(value: number)
705
706修改子组件在主轴方向的默认大小。
707
708**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
709
710**系统能力:** SystemCapability.ArkUI.ArkUI.Full
711
712**参数:**
713
714| 参数名   | 类型                            | 必填   | 说明                   |
715| ---- | ----------------------------- | ---- | -------------------- |
716| value | number | 是    | 子组件在主轴方向的默认大小。<br/>单位:vp<br/>**说明:** <br/>必须是有限的非负数值,否则抛出异常。|
717
718**错误码**:
719
720以下错误码详细介绍请参考[通用错误码](../../errorcode-universal.md)。
721
722| 错误码ID | 错误信息 |
723| ------- | -------- |
724| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.   |
725
726get childDefaultSize(): number
727
728获取子组件在主轴方向的默认大小。
729
730**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
731
732**系统能力:** SystemCapability.ArkUI.ArkUI.Full
733
734**返回值:**
735
736| 类型                                                         | 说明                                                         |
737| ------------------------------------------------------------ | ------------------------------------------------------------ |
738| number | 子组件在主轴方向的默认大小。<br/>单位:vp <br/>取值范围:[0, +∞)|
739
740### splice<sup>12+</sup>
741
742splice(start: number, deleteCount?: number, childrenSize?: Array\<number>): void
743
744批量增删改子组件在主轴方向的大小信息。
745
746**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
747
748**系统能力:** SystemCapability.ArkUI.ArkUI.Full
749
750**参数:**
751
752| 参数名   | 类型                            | 必填   | 说明                   |
753| ---- | ----------------------------- | ---- | -------------------- |
754| start | number | 是    | 从0开始计算的索引值,表示要开始修改子组件在主轴方向大小信息的位置。<br/>**说明:** <br/>1. 必须是有限的非负数值,否则抛出异常。<br/>2. 非整数会被截断为整数。<br/>3. 超过最大索引值不生效。<br/>取值范围:[0, +∞) |
755| deleteCount | number | 否    | 从start开始删除的大小信息的数量。<br/>**说明:** <br/>1.  必须是有限的非负数值,否则处理为0。<br/>2. 非整数会被截断为整数。<br/>3. start + deleteCount - 1可以超过最大索引值,会删除索引值start开始之后的所有子组件的大小信息。<br/>默认值为+∞。 <br/>取值范围:[0, +∞) |
756| childrenSize | Array\<number > | 否    | 要在start位置插入的所有子组件的主轴方向的大小。<br/>Array中各个数值单位:vp <br/>**说明:** <br/>1.数组中数值如果是有限的非负值,则认为是指定的大小,后续不随默认大小的变化而变化。<br/>2. 数组中数值如果不是有限的非负值,会被处理成默认大小,后续会随默认大小的变化而变化。<br/>默认值为空数组。 <br/>取值范围:[0, +∞) |
757
758
759**错误码**:
760
761以下错误码详细介绍请参考[通用错误码](../../errorcode-universal.md)。
762
763| 错误码ID | 错误信息 |
764| ------- | -------- |
765| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.   |
766
767
768> **说明:**
769>
770> - 如果仅使用start参数,表示删除索引值start及之后的子组件的大小信息。
771> - 如果仅使用start和deleteCount参数,表示删除索引值start开始的deleteCount数量的子组件的大小信息。一般在删除子组件时使用。
772> - 如果使用3个参数,表示删除索引值start开始的deleteCount数量的子组件的大小信息,再在start位置插入childrenSize中所有的大小信息。一般在增加子组件或者批量更新子组件主轴方向大小的时候使用,如果仅是增加子组件,deleteCount为0,childrenSize的元素数量和增加子组件的个数应该相等;如果仅是批量更新子组件主轴方向的大小,childrenSize的元素数量应该和deleteCount相等,即为批量更新的数量。
773> - 如果想要通知某个子组件的大小为默认大小,childrenSize中对应的值不应该给一个有限的非负值,而应该给NaN,任意负值等能被处理成默认大小的值。
774
775### update<sup>12+</sup>
776
777update(index: number, childSize: number): void
778
779修改指定索引值对应的子组件的主轴方向的大小信息。
780
781**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
782
783**系统能力:** SystemCapability.ArkUI.ArkUI.Full
784
785**参数:**
786
787| 参数名   | 类型                            | 必填   | 说明                   |
788| ---- | ----------------------------- | ---- | -------------------- |
789| index | number | 是    | 从0开始计算的索引值,表示要开始修改子组件在主轴方向大小信息的位置。<br/>**说明:** <br/>1. 必须是有限的非负数值,否则抛出异常。<br/>2. 非整数会被截断为整数。<br/>3. 超过最大索引值不生效。 <br/>取值范围:[0, +∞)|
790| childSize | number | 是    | 要更新成的大小。<br/>单位:vp <br/>**说明:** <br/>1.数值如果是有限的非负值,则认为是指定的大小,后续不随默认大小的变化而变化。<br/>2. 数值如果不是有限的非负值,会被处理成默认大小,后续会随默认大小的变化而变化。  <br/>取值范围:[0, +∞)|
791
792**错误码**:
793
794以下错误码详细介绍请参考[通用错误码](../../errorcode-universal.md)。
795
796| 错误码ID | 错误信息 |
797| ------- | -------- |
798| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameters types; 3. Parameter verification failed.   |
799
800## UIScrollableCommonEvent<sup>19+</sup>
801用于设置滚动事件回调。
802### setOnReachStart<sup>19+</sup>
803
804setOnReachStart(callback: Callback\<void> | undefined): void
805
806设置[onReachStart](./ts-container-scrollable-common.md#onreachstart11)事件的回调。
807
808方法入参为undefined的时候,重置对应的事件回调。
809
810**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
811
812**系统能力:** SystemCapability.ArkUI.ArkUI.Full
813
814**参数:**
815
816| 参数名 | 类型   | 必填 | 说明                       |
817| ------ | ------ | ---- | -------------------------- |
818| callback  | [Callback](./ts-types.md#callback12)\<void> &nbsp;\|&nbsp;undefined | 是   | onReachStart事件的回调函数。 |
819
820### setOnReachEnd<sup>19+</sup>
821
822setOnReachEnd(callback: Callback\<void> | undefined): void
823
824设置[onReachEnd](./ts-container-scrollable-common.md#onreachend11)事件的回调。
825
826方法入参为undefined时,会重置事件回调。
827
828**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
829
830**系统能力:** SystemCapability.ArkUI.ArkUI.Full
831
832**参数:**
833
834| 参数名 | 类型   | 必填 | 说明                       |
835| ------ | ------ | ---- | -------------------------- |
836| callback  | [Callback](./ts-types.md#callback12)\<void> &nbsp;\|&nbsp;undefined | 是   | onReachEnd事件的回调函数。 |
837
838
839### setOnScrollStart<sup>19+</sup>
840
841setOnScrollStart(callback: Callback\<void> | undefined): void
842
843设置[onScrollStart](./ts-container-scrollable-common.md#onscrollstart11)事件的回调。
844
845方法入参为undefined时,会重置事件回调。
846
847**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
848
849**系统能力:** SystemCapability.ArkUI.ArkUI.Full
850
851**参数:**
852
853| 参数名 | 类型   | 必填 | 说明                       |
854| ------ | ------ | ---- | -------------------------- |
855| callback  | [Callback](./ts-types.md#callback12)\<void> &nbsp;\|&nbsp; undefined | 是   | onScrollStart事件的回调函数。|
856
857
858### setOnScrollStop<sup>19+</sup>
859
860setOnScrollStop(callback: Callback\<void> | undefined): void
861
862设置[onScrollStop](./ts-container-scrollable-common.md#onscrollstop11)事件的回调。
863
864方法入参为undefined时,会重置事件回调。
865
866**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
867
868**系统能力:** SystemCapability.ArkUI.ArkUI.Full
869
870**参数:**
871
872| 参数名 | 类型   | 必填 | 说明                       |
873| ------ | ------ | ---- | -------------------------- |
874| callback  | [Callback](./ts-types.md#callback12)\<void> &nbsp;\|&nbsp;undefined | 是   | onScrollStop事件的回调函数。 |
875
876### setOnScrollFrameBegin<sup>19+</sup>
877
878setOnScrollFrameBegin(callback: OnScrollFrameBeginCallback | undefined): void
879
880设置[onScrollFrameBegin](./ts-container-scroll.md#onscrollframebegin9)事件的回调。
881
882方法入参为undefined时,会重置事件回调。
883
884**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
885
886**系统能力:** SystemCapability.ArkUI.ArkUI.Full
887
888**参数:**
889
890| 参数名 | 类型   | 必填 | 说明                       |
891| ------ | ------ | ---- | -------------------------- |
892| callback  | [OnScrollFrameBeginCallback](./ts-container-scroll.md#onscrollframebegincallback18)&nbsp;\|&nbsp;undefined | 是   | onScrollFrameBegin事件的回调函数。 |
893
894
895## OnWillStopDraggingCallback<sup>20+</sup>
896
897type OnWillStopDraggingCallback = (velocity: number) => void
898
899滚动组件划动离手时触发的回调。
900
901**卡片能力:** 从API version 20开始,该接口支持在ArkTS卡片中使用。
902
903**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
904
905**系统能力:** SystemCapability.ArkUI.ArkUI.Full
906
907**参数:**
908
909| 参数名   | 类型   | 必填 | 说明                                                         |
910| -------- | ------ | ---- | ------------------------------------------------------------ |
911| velocity | number | 是   | 划动离手速度,滚动组件的内容向上滚动时速度为正,向下滚动时速度为负。<br/>单位vp/s。 |
912
913## 示例
914
915### 示例1(支持滚动手势)
916该示例通过设置enableScrollInteraction属性,实现了使用手势滚动纵向列表,并在当前显示界面发生改变时回调索引。
917
918ListDataSource说明及完整代码参考[示例1添加滚动事件](./ts-container-list.md#示例1添加滚动事件)。
919
920<!--code_no_check-->
921```ts
922// xxx.ets
923import { ListDataSource } from './ListDataSource';
924
925@Entry
926@Component
927struct ListExample {
928  private arr: ListDataSource = new ListDataSource([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
929
930  build() {
931    Column() {
932      List({ space: 20, initialIndex: 0 }) {
933        LazyForEach(this.arr, (item: number) => {
934          ListItem() {
935            Text('' + item)
936              .width('100%')
937              .height(100)
938              .fontSize(16)
939              .textAlign(TextAlign.Center)
940              .borderRadius(10)
941              .backgroundColor(0xFFFFFF)
942          }
943        }, (item: number) => item.toString())
944      }
945      .enableScrollInteraction(true)
946      .listDirection(Axis.Vertical) // 排列方向
947      .scrollBar(BarState.Off)
948      .friction(0.6)
949      .divider({
950        strokeWidth: 2,
951        color: 0xFFFFFF,
952        startMargin: 20,
953        endMargin: 20
954      }) // 每行之间的分界线
955      .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring
956      .onScrollIndex((firstIndex: number, lastIndex: number, centerIndex: number) => {
957        console.info('first' + firstIndex);
958        console.info('last' + lastIndex);
959        console.info('center' + centerIndex);
960      })
961      .onScrollVisibleContentChange((start: VisibleListContentInfo, end: VisibleListContentInfo) => {
962        console.info(' start index: ' + start.index +
963          ' start item group area: ' + start.itemGroupArea +
964          ' start index in group: ' + start.itemIndexInGroup);
965        console.info(' end index: ' + end.index +
966          ' end item group area: ' + end.itemGroupArea +
967          ' end index in group: ' + end.itemIndexInGroup);
968      })
969      .onDidScroll((scrollOffset: number, scrollState: ScrollState) => {
970        console.info(`onScroll scrollState = ScrollState` + scrollState + `, scrollOffset = ` + scrollOffset);
971      })
972      .width('90%')
973    }
974    .width('100%')
975    .height('100%')
976    .backgroundColor(0xDCDCDC)
977    .padding({ top: 5 })
978  }
979}
980```
981
982![zh-cn_image_0000001174264378](figures/zh-cn_image_0000001174264378.gif)
983
984### 示例2(设置边缘渐隐)
985该示例通过设置fadingEdge属性,实现了List组件开启边缘渐隐效果并设置边缘渐隐长度。
986
987ListDataSource说明及完整代码参考[示例1添加滚动事件](./ts-container-list.md#示例1添加滚动事件)。
988
989<!--code_no_check-->
990```ts
991// xxx.ets
992import { LengthMetrics } from '@kit.ArkUI';
993import { ListDataSource } from './ListDataSource';
994
995@Entry
996@Component
997struct ListExample {
998  private arr: ListDataSource = new ListDataSource([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]);
999  scrollerForList: Scroller = new Scroller();
1000
1001  build() {
1002    Column() {
1003
1004      List({ space: 20, initialIndex: 0, scroller: this.scrollerForList }) {
1005        LazyForEach(this.arr, (item: number) => {
1006          ListItem() {
1007            Text('' + item)
1008              .width('100%')
1009              .height(100)
1010              .fontSize(16)
1011              .textAlign(TextAlign.Center)
1012              .borderRadius(10)
1013              .backgroundColor(0xFFFFFF)
1014          }
1015        }, (item: number) => item.toString())
1016      }
1017      .fadingEdge(true, { fadingEdgeLength: LengthMetrics.vp(80) })
1018    }
1019    .width('100%')
1020    .height('100%')
1021    .backgroundColor(0xDCDCDC)
1022    .padding({ top: 5 })
1023  }
1024}
1025```
1026
1027![fadingEdge_list](figures/fadingEdge_list.gif)
1028
1029### 示例3(设置裁剪区域)
1030该示例通过设置clipContent属性,改变组件的内容层裁剪区域。
1031
1032<!--code_no_check-->
1033```ts
1034// xxx.ets
1035import { LengthMetrics } from '@kit.ArkUI';
1036
1037@Entry
1038@Component
1039struct ScrollExample {
1040  scroller: Scroller = new Scroller();
1041  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
1042  @State clipContent: ContentClipMode | RectShape | undefined = undefined;
1043
1044  build() {
1045    Column() {
1046      Scroll(this.scroller) {
1047        Column() {
1048          ForEach(this.arr, (item: number) => {
1049            Text(item.toString())
1050              .width(300)
1051              .height(80)
1052              .fontSize(20)
1053              .textAlign(TextAlign.Center)
1054              .backgroundColor(Color.Grey)
1055          }, (item: string) => item)
1056        }
1057      }
1058      .backgroundColor(Color.Blue)
1059      .clipContent(this.clipContent)
1060      .scrollBar(BarState.Off)
1061      .friction(0.6)
1062      .width(300)
1063      .height("50%")
1064      .padding(10)
1065      .safeAreaPadding(LengthMetrics.vp(10))
1066      .initialOffset({ yOffset: 80 })
1067      .margin({ top: 20 })
1068
1069      Button('clipContent SAFE_AREA')
1070        .onClick(() => {
1071          this.clipContent = ContentClipMode.SAFE_AREA;
1072        }).margin({ top: 30 })
1073
1074      Button('clipContent BOUNDARY')
1075        .onClick(() => {
1076          this.clipContent = ContentClipMode.BOUNDARY;
1077        }).margin({ top: 35 })
1078
1079      Button('clipContent CONTENT_ONLY')
1080        .onClick(() => {
1081          this.clipContent = ContentClipMode.CONTENT_ONLY;
1082        }).margin({ top: 40 })
1083    }.width('100%').height('100%').backgroundColor(0xDCDCDC)
1084  }
1085}
1086```
1087
1088![clipContent_scroll](figures/clipContent_scroll.gif)
1089
1090### 示例4(设置滚动条边距)
1091该示例通过设置scrollBarMargin属性,调整滚动组件的滚动条边距。
1092
1093ListDataSource说明及完整代码参考[示例1添加滚动事件](./ts-container-list.md#示例1添加滚动事件)。
1094
1095<!--code_no_check-->
1096```ts
1097// xxx.ets
1098import { ListDataSource } from './ListDataSource';
1099import { LengthMetrics } from '@kit.ArkUI';
1100
1101@Entry
1102@Component
1103struct ListExample {
1104  arr: ListDataSource = new ListDataSource([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
1105  @State scrollBarMargin: ScrollBarMargin = { start: LengthMetrics.vp(0), end: LengthMetrics.vp(0) };
1106
1107  build() {
1108    Stack({ alignContent: Alignment.TopStart }) {
1109      Column() {
1110        List({ space: 20, initialIndex: 0 }) {
1111          LazyForEach(this.arr, (item: number, index?: number) => {
1112            ListItem() {
1113              Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center }) {
1114                Text('' + item)
1115                  .width('100%')
1116                  .height(80)
1117                  .fontSize(20)
1118                  .textAlign(TextAlign.Center)
1119                  .borderRadius(10)
1120                  .backgroundColor(Color.White)
1121                  .flexShrink(1)
1122              }
1123            }
1124          }, (item: number) => item.toString())
1125        }.width('90%')
1126        .friction(0.6)
1127        .scrollBar(BarState.On)
1128        .scrollBarMargin(this.scrollBarMargin)
1129      }.width('100%')
1130
1131      Button('scrollBarMargin')
1132        .onClick(() => {
1133          this.scrollBarMargin = { start: LengthMetrics.vp(45), end: LengthMetrics.vp(70) };
1134        }).margin({ top: 5, left: 20 })
1135
1136      Button('scrollBarMargin2')
1137        .onClick(() => {
1138          this.scrollBarMargin = { start: LengthMetrics.vp(15), end: LengthMetrics.vp(100) };
1139        }).margin({ top: 200, left: 20 })
1140    }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })
1141  }
1142}
1143```
1144
1145![scrollBarMargin_list](figures/scrollBarMargin_list.gif)