• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 文本滑动选择器弹窗 (TextPickerDialog)
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @luoying_ace_admin-->
5<!--Designer: @weixin_52725220-->
6<!--Tester: @xiong0104-->
7<!--Adviser: @HelloCrease-->
8
9根据指定的选择范围创建文本选择器,展示在弹窗上。
10
11>  **说明:**
12>
13> - 该组件从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
14>
15> - 本模块功能依赖UI的执行上下文,不可在[UI上下文不明确](../../../ui/arkts-global-interface.md#ui上下文不明确)的地方使用,参见[UIContext](../arkts-apis-uicontext-uicontext.md)说明。
16>
17> - 本模块不支持深浅色模式热更新,如果需要进行深浅色模式切换,请重新打开弹窗。
18
19## TextPickerDialog
20
21### show<sup>(deprecated)</sup>
22
23static show(options?: TextPickerDialogOptions)
24
25定义文本滑动选择器弹窗并弹出。
26
27> **说明:**
28>
29> 从API version 18开始废弃,建议使用[UIContext](../arkts-apis-uicontext-uicontext.md)中的[showTextPickerDialog](../arkts-apis-uicontext-uicontext.md#showtextpickerdialog)替代。
30>
31> 从API version 10开始,可以通过使用[UIContext](../arkts-apis-uicontext-uicontext.md)中的[showTextPickerDialog](../arkts-apis-uicontext-uicontext.md#showtextpickerdialog)来明确UI的执行上下文。
32
33**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
34
35**系统能力:** SystemCapability.ArkUI.ArkUI.Full
36
37**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
38
39**参数:**
40
41| 参数名  | 类型                                                        | 必填 | 说明                       |
42| ------- | ----------------------------------------------------------- | ---- | -------------------------- |
43| options | [TextPickerDialogOptions](#textpickerdialogoptions对象说明) | 否   | 配置文本选择器弹窗的参数。 |
44
45## TextPickerDialogOptions对象说明
46
47文本选择器弹窗的参数继承自[TextPickerOptions](ts-basic-components-textpicker.md#textpickeroptions对象说明)。
48
49**系统能力:** SystemCapability.ArkUI.ArkUI.Full
50
51| 名称 | 类型 | 只读 | 可选 |  说明 |
52| -------- | -------- | -------- |  -------- |  -------- |
53| defaultPickerItemHeight | number \| string | 否 | 是 | 设置选择器中选项的高度。number类型取值范围:[0, +∞),string类型仅支持number类型取值的字符串形式,例如"56"。<br/>默认值:选中项56vp,非选中项36vp。设置该参数后,选中项与非选中项的高度均为所设置的值。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
54| disappearTextStyle<sup>10+</sup> | [PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明) | 否 | 是 | 设置边缘项(以选中项为基准向上或向下的第二项)的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '14fp', <br/>weight: FontWeight.Regular<br/>}<br/>}<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
55| textStyle<sup>10+</sup> | [PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明) | 否 | 是 | 设置待选项(以选中项为基准向上或向下的第一项)的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>}<br/>}<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
56| selectedTextStyle<sup>10+</sup> | [PickerTextStyle](ts-picker-common.md#pickertextstyle对象说明) | 否 | 是 | 设置选中项的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff007dff',<br/>font: {<br/>size: '20fp', <br/>weight: FontWeight.Medium<br/>}<br/>}<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
57| acceptButtonStyle<sup>12+</sup> | [PickerDialogButtonStyle](ts-picker-common.md#pickerdialogbuttonstyle12对象说明) | 否 | 是 | 设置确认按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。<br />**说明:**<br/>1.acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,如果同时设置为true,则primary字段不生效,保持默认值false。<br/>2.按钮高度默认40vp,在关怀模式-大字体场景下高度不变,即使按钮样式设置为圆角矩形[ROUNDED_RECTANGLE](ts-basic-components-button.md#buttontype枚举说明),呈现效果依然是胶囊型按钮[Capsule](ts-basic-components-button.md#buttontype枚举说明)。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
58| cancelButtonStyle<sup>12+</sup> | [PickerDialogButtonStyle](ts-picker-common.md#pickerdialogbuttonstyle12对象说明) | 否 | 是 | 设置取消按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。<br />**说明:**<br/>1.acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,如果同时设置为true,则primary字段不生效,保持默认值false。<br/>2.按钮高度默认40vp,在关怀模式-大字体场景下高度不变,即使按钮样式设置为圆角矩形[ROUNDED_RECTANGLE](ts-basic-components-button.md#buttontype枚举说明),呈现效果依然是胶囊型按钮[Capsule](ts-basic-components-button.md#buttontype枚举说明)。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
59| canLoop<sup>10+</sup> | boolean | 否 | 是 | 设置是否可循环滚动。<br/>- true:可循环。<br/>- false:不可循环。<br/>默认值:true<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
60| alignment<sup>10+</sup>  | [DialogAlignment](ts-methods-alert-dialog-box.md#dialogalignment枚举说明) | 否  | 是  | 弹窗在竖直方向上的对齐方式。<br>默认值:DialogAlignment.Default<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
61| offset<sup>10+</sup>     | [Offset](ts-types.md#offset) | 否    | 是    | 弹窗相对alignment所在位置的偏移量。<br/>默认值:{ dx: 0 , dy: 0 }<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
62| maskRect<sup>10+</sup>| [Rectangle](ts-methods-alert-dialog-box.md#rectangle8类型说明) | 否    | 是    | 弹窗遮蔽层区域,在遮蔽层区域内的事件不透传,在遮蔽层区域外的事件透传。<br/>默认值:{ x: 0, y: 0, width: '100%', height: '100%' }<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
63| onAccept | (value: [TextPickerResult](#textpickerresult对象说明)) => void | 否 | 是 | 点击弹窗中的“确定”按钮时触发该回调。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
64| onCancel | () => void | 否 | 是 | 点击弹窗中的“取消”按钮时触发该回调。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
65| onChange | (value: [TextPickerResult](#textpickerresult对象说明)) => void | 否 | 是 | 滑动弹窗中的选择器后,选项归位至选中项位置时,触发该回调。<br/>回调会在滑动动画结束后触发,如果需要快速获取索引值变化,建议使用onEnterSelectedArea接口。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
66| onScrollStop<sup>14+</sup> | [Callback](ts-types.md#callback12)\<[TextPickerResult](#textpickerresult对象说明)> | 否 | 是 | 滑动弹窗中的选择器的选择列停止时,触发该回调。<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 |
67| backgroundColor<sup>11+</sup> | [ResourceColor](ts-types.md#resourcecolor)  | 否 | 是 | 弹窗背板颜色。<br/>默认值:Color.Transparent<br/>**说明:** <br/>当设置了backgroundColor为非透明色时,backgroundBlurStyle需要设置为BlurStyle.NONE,否则显示的颜色将不符合预期效果。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
68| backgroundBlurStyle<sup>11+</sup> | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否 | 是 | 弹窗背板模糊材质。<br/>默认值:BlurStyle.COMPONENT_ULTRA_THICK<br/>**说明:** <br/>设置为BlurStyle.NONE即可关闭背景虚化。当设置了backgroundBlurStyle为非NONE值时,则不要设置backgroundColor,否则显示的颜色将不符合预期效果。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
69| backgroundBlurStyleOptions<sup>19+</sup> | [BackgroundBlurStyleOptions](ts-universal-attributes-background.md#backgroundblurstyleoptions10对象说明) | 否 | 是 | 背景模糊效果。<br />**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 |
70| backgroundEffect<sup>19+</sup> | [BackgroundEffectOptions](ts-universal-attributes-background.md#backgroundeffectoptions11) | 否 | 是 | 背景效果参数。<br />**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 |
71| onDidAppear<sup>12+</sup> | () => void | 否 | 是 | 弹窗弹出时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。<br />2.在onDidAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。<br />3.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。<br />4. 当弹窗入场动效未完成时关闭弹窗,该回调不会触发。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
72| onDidDisappear<sup>12+</sup> | () => void | 否 | 是 | 弹窗消失时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
73| onWillAppear<sup>12+</sup> | () => void | 否 | 是 | 弹窗显示动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。<br />2.在onWillAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
74| onWillDisappear<sup>12+</sup> | () => void | 否 | 是 | 弹窗退出动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。<br />2.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
75| shadow<sup>12+</sup>              | [ShadowOptions](ts-universal-attributes-image-effect.md#shadowoptions对象说明) \| [ShadowStyle](ts-universal-attributes-image-effect.md#shadowstyle10枚举说明) | 否  | 是  | 设置弹窗背板的阴影。<br />当设备为2in1时,默认场景下获焦阴影值为ShadowStyle.OUTER_FLOATING_MD,失焦为ShadowStyle.OUTER_FLOATING_SM <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
76| enableHoverMode<sup>14+</sup>     | boolean | 否  | 是  | 是否响应悬停态。<br />- true:响应悬停态。<br/>- false:不响应悬停态。<br/>默认值:false<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
77| hoverModeArea<sup>14+</sup>       | [HoverModeAreaType](ts-universal-attributes-sheet-transition.md#hovermodeareatype14) | 否  | 是  | 设置悬停态下弹窗默认展示区域。<br />默认值:HoverModeAreaType.BOTTOM_SCREEN<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
78| disableTextStyleAnimation<sup>15+</sup>   |  boolean | 否  | 是  | 设置是否关闭滑动过程中文本样式变化的动效。<br/>- true:关闭文本样式变化动效。<br/>- false:不关闭文本样式变化动效。<br/>默认值:false<br/>**说明:**<br/>设置为true时,滑动过程中无字号、字重、字体颜色等变化动效,且文本均显示为defaultTextStyle属性设置的样式。如未设置defaultTextStyle,则显示为[Text](ts-basic-components-text.md)组件默认样式。<br />**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 |
79| defaultTextStyle<sup>15+</sup>   |  [TextPickerTextStyle](ts-basic-components-textpicker.md#textpickertextstyle15类型说明) | 否  | 是  | 设置关闭滑动过程中文本样式变化动效时的各个选项的文本样式,仅当disableTextStyleAnimation为true时生效。<br/>默认值:与[Text](ts-basic-components-text.md)组件默认值相同。<br />**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 |
80| onEnterSelectedArea<sup>18+</sup>   |  Callback\<[TextPickerResult](#textpickerresult对象说明)> | 否  | 是  |  滑动过程中,选项进入分割线区域内,触发该回调。与onChange事件的差别在于,该事件的触发时机早于onChange事件,当当前滑动列滑动距离超过选中项高度的一半时,选项此时已经进入分割线区域内,会触发该事件。<br />**说明:**<br />在多列联动场景中,不建议使用该回调,由于该回调标识的是滑动过程中选项进入分割线区域内的节点,而跟随变化的选项并不涉及滑动,因此,回调的返回值中,仅当前滑动列的值会正常变化,其余未滑动列的值保持不变。<br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 |
81| enableHapticFeedback<sup>18+</sup> | boolean | 否  | 是  | 设置是否开启触控反馈。<br/>- true:开启触控反馈。<br/>- false:不开启触控反馈。<br/>默认值:true<br />**原子化服务API**: 从API version 18开始,该接口支持在原子化服务中使用。<br />**说明**:<br/>1. 设置为true后,其生效情况取决于系统的硬件是否支持。<br/>2. 开启触控反馈时,需要在工程的src/main/module.json5文件的"module"内配置requestPermissions字段开启振动权限,配置如下:<br />"requestPermissions": [{"name": "ohos.permission.VIBRATE"}]|
82| selectedBackgroundStyle<sup>20+</sup> | [PickerBackgroundStyle](ts-basic-components-textpicker.md#pickerbackgroundstyle20) | 否  | 是  | 设置选中项背景样式。<br />默认值:<br/>{ <br/>color: $r('sys.color.comp_background_tertiary'),<br/>borderRadius: $r('sys.float.corner_radius_level12')<br/>}<br />**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。<br />|
83
84## TextPickerDialogOptionsExt<sup>20+</sup>对象说明
85
86文本选择器弹窗的参数继承自[TextPickerOptions](ts-basic-components-textpicker.md#textpickeroptions对象说明)。
87
88**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
89
90**系统能力:** SystemCapability.ArkUI.ArkUI.Full
91
92| 名称 | 类型 | 只读 | 可选 |  说明 |
93| -------- | -------- | -------- |  -------- |  -------- |
94| defaultPickerItemHeight | number \| string | 否 | 是 | 设置选择器中选项的高度。number类型取值范围:[0, +∞),string类型仅支持number类型取值的字符串形式,例如"56"。<br/>默认值:选中项56vp,非选中项36vp。设置该参数后,选中项与非选中项的高度均为所设置的值。 |
95| acceptButtonStyle | [PickerDialogButtonStyle](ts-picker-common.md#pickerdialogbuttonstyle12对象说明) | 否   | 是   | 设置确认按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。<br />**说明:**<br/>1.acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,如果同时设置为true,则primary字段不生效,保持默认值false。<br/>2.按钮高度默认40vp,在关怀模式-大字体场景下高度不变,即使按钮样式设置为圆角矩形[ROUNDED_RECTANGLE](ts-basic-components-button.md#buttontype枚举说明),呈现效果依然是胶囊型按钮[Capsule](ts-basic-components-button.md#buttontype枚举说明)。|
96| cancelButtonStyle | [PickerDialogButtonStyle](ts-picker-common.md#pickerdialogbuttonstyle12对象说明) | 否   | 是   | 设置取消按钮显示样式、样式和重要程度、角色、背景色、圆角、文本颜色、字号、字体粗细、字体样式、字体列表、按钮是否默认响应Enter键。<br />**说明:**<br/>1.acceptButtonStyle与cancelButtonStyle中最多只能有一个primary字段配置为true,如果同时设置为true,则primary字段不生效,保持默认值false。<br/>2.按钮高度默认40vp,在关怀模式-大字体场景下高度不变,即使按钮样式设置为圆角矩形[ROUNDED_RECTANGLE](ts-basic-components-button.md#buttontype枚举说明),呈现效果依然是胶囊型按钮[Capsule](ts-basic-components-button.md#buttontype枚举说明)。|
97| canLoop | boolean | 否   | 是   | 设置是否可循环滚动。<br/>- true:可循环。<br/>- false:不可循环。<br/>默认值:true |
98| alignment  | [DialogAlignment](ts-methods-alert-dialog-box.md#dialogalignment枚举说明) | 否  | 是 | 弹窗在竖直方向上的对齐方式。<br>默认值:DialogAlignment.Default |
99| offset     | [Offset](ts-types.md#offset) | 否    | 是    | 弹窗相对alignment所在位置的偏移量。<br/>默认值:{ dx: 0 , dy: 0 } |
100| maskRect| [Rectangle](ts-methods-alert-dialog-box.md#rectangle8类型说明) | 否    | 是    | 弹窗遮蔽层区域,在遮蔽层区域内的事件不透传,在遮蔽层区域外的事件透传。<br/>默认值:{ x: 0, y: 0, width: '100%', height: '100%' } |
101| onAccept | [Callback](ts-types.md#callback12)\<[TextPickerResult](#textpickerresult对象说明)> | 否 | 是 | 点击弹窗中的“确定”按钮时触发该回调。 |
102| onCancel | [VoidCallback](ts-types.md#voidcallback12) | 否 | 是 | 点击弹窗中的“取消”按钮时触发该回调。 |
103| onChange | [Callback](ts-types.md#callback12)\<[TextPickerResult](#textpickerresult对象说明)> | 否 | 是 | 滑动弹窗中的选择器后,选项归位至选中项位置时,触发该回调。<br/>回调会在滑动动画结束后触发,如果需要快速获取索引值变化,建议使用onEnterSelectedArea接口。 |
104| onScrollStop | [Callback](ts-types.md#callback12)\<[TextPickerResult](#textpickerresult对象说明)> | 否 | 是 | 滑动弹窗中的选择器的选择列停止时,触发该回调。 |
105| backgroundColor | [ResourceColor](ts-types.md#resourcecolor)  | 否 | 是 | 弹窗背板颜色。<br/>默认值:Color.Transparent<br/>**说明:** <br/>当设置了backgroundColor为非透明色时,backgroundBlurStyle需要设置为BlurStyle.NONE,否则显示的颜色将不符合预期效果。 |
106| backgroundBlurStyle | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否 | 是 | 弹窗背板模糊材质。<br/>默认值:BlurStyle.COMPONENT_ULTRA_THICK<br/>**说明:** <br/>设置为BlurStyle.NONE即可关闭背景虚化。当设置了backgroundBlurStyle为非NONE值时,则不要设置backgroundColor,否则显示的颜色将不符合预期效果。 |
107| backgroundBlurStyleOptions | [BackgroundBlurStyleOptions](ts-universal-attributes-background.md#backgroundblurstyleoptions10对象说明) | 否 | 是 | 背景模糊效果。<br />**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。 |
108| backgroundEffect | [BackgroundEffectOptions](ts-universal-attributes-background.md#backgroundeffectoptions11) | 否 | 是 | 背景效果参数。 |
109| onDidAppear | [VoidCallback](ts-types.md#voidcallback12) | 否 | 是 | 弹窗弹出时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。<br />2.在onDidAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。<br />3.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。<br />4. 当弹窗入场动效未完成时关闭弹窗,该回调不会触发。 |
110| onDidDisappear | [VoidCallback](ts-types.md#voidcallback12) | 否 | 是 | 弹窗消失时的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。 |
111| onWillAppear | [VoidCallback](ts-types.md#voidcallback12) | 否 | 是 | 弹窗显示动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。<br />2.在onWillAppear内设置改变弹窗显示效果的回调事件,二次弹出生效。|
112| onWillDisappear | [VoidCallback](ts-types.md#voidcallback12) | 否 | 是 | 弹窗退出动效前的事件回调。<br />**说明:**<br />1.正常时序依次为:onWillAppear>>onDidAppear>>(onAccept/onCancel/onChange/onScrollStop)>>onWillDisappear>>onDidDisappear。<br />2.快速点击弹出,消失弹窗时,存在onWillDisappear在onDidAppear前生效。|
113| shadow              | [ShadowOptions](ts-universal-attributes-image-effect.md#shadowoptions对象说明) \| [ShadowStyle](ts-universal-attributes-image-effect.md#shadowstyle10枚举说明) | 否  | 是  | 设置弹窗背板的阴影。<br />当设备为2in1时,默认场景下获焦阴影值为ShadowStyle.OUTER_FLOATING_MD,失焦为ShadowStyle.OUTER_FLOATING_SM |
114| enableHoverMode     | boolean | 否  | 是  | 是否响应悬停态。<br />- true:响应悬停态。<br/>- false:不响应悬停态。<br/>默认值:false |
115| hoverModeArea       | [HoverModeAreaType](ts-universal-attributes-sheet-transition.md#hovermodeareatype14) | 否  | 是  | 设置悬停态下弹窗默认展示区域。<br />默认值:HoverModeAreaType.BOTTOM_SCREEN|
116| disableTextStyleAnimation   |  boolean | 否  | 是  |  设置是否关闭滑动过程中文本样式变化的动效。<br/>- true:关闭文本样式变化动效。<br/>- false:不关闭文本样式变化动效。<br/>默认值:false<br/>**说明:**<br/>设置为true时,滑动过程中无字号、字重、字体颜色等变化动效,且文本均显示为defaultTextStyle属性设置的样式。如未设置defaultTextStyle,则显示为[Text](ts-basic-components-text.md)组件默认样式。 |
117| defaultTextStyle   |  [TextPickerTextStyle](ts-basic-components-textpicker.md#textpickertextstyle15类型说明) | 否  | 是  |  设置关闭滑动过程中文本样式变化动效时的各个选项的文本样式,仅当disableTextStyleAnimation为true时生效。<br/>默认值:与[Text](ts-basic-components-text.md)组件默认值相同。 |
118| onEnterSelectedArea   |  [Callback](ts-types.md#callback12)\<[TextPickerResult](#textpickerresult对象说明)> | 否  | 是  |  滑动过程中,选项进入分割线区域内,触发该回调。与onChange事件的差别在于,该事件的触发时机早于onChange事件,当当前滑动列滑动距离超过选中项高度的一半时,选项此时已经进入分割线区域内,会触发该事件。<br />**说明:**<br />在多列联动场景中,不建议使用该回调,由于该回调标识的是滑动过程中选项进入分割线区域内的节点,而跟随变化的选项并不涉及滑动,因此,回调的返回值中,仅当前滑动列的值会正常变化,其余未滑动列的值保持不变。 |
119| enableHapticFeedback | boolean | 否  | 是  | 设置是否开启触控反馈。<br/>- true:开启触控反馈。<br/>- false:不开启触控反馈。<br />默认值:true<br />**说明**:<br/>1. 设置为true后,其生效情况取决于系统的硬件是否支持。<br/>2. 开启触控反馈时,需要在工程的src/main/module.json5文件的"module"内配置requestPermissions字段开启振动权限,配置如下:<br />"requestPermissions": [{"name": "ohos.permission.VIBRATE"}]|
120| selectedBackgroundStyle | [PickerBackgroundStyle](ts-basic-components-textpicker.md#pickerbackgroundstyle20) | 否  | 是  | 设置选中项背景样式。<br />默认值:<br/>{ <br/>color: $r('sys.color.comp_background_tertiary'),<br/>borderRadius: $r('sys.float.corner_radius_level12')<br/>}|
121| disappearTextStyle | [TextPickerTextStyle](ts-basic-components-textpicker.md#textpickertextstyle15类型说明) | 否 | 是 | 设置边缘项(以选中项为基准向上或向下的第二项)的文本颜色、字号、字体粗细、最大字号、最小字号、超长文本截断方式。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '14fp', <br/>weight: FontWeight.Regular<br/>},<br/>minFontSize: 0,<br/>maxFontSize: 0,<br/>overflow: TextOverflow.CLIP<br/>} |
122| textStyle | [TextPickerTextStyle](ts-basic-components-textpicker.md#textpickertextstyle15类型说明) | 否 | 是 | 设置待选项(以选中项为基准向上或向下的第一项)的文本颜色、字号、字体粗细、最大字号、最小字号、超长文本截断方式。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>},<br/>minFontSize: 0,<br/>maxFontSize: 0,<br/>overflow: TextOverflow.CLIP<br/>} |
123| selectedTextStyle | [TextPickerTextStyle](ts-basic-components-textpicker.md#textpickertextstyle15类型说明) | 否 | 是 | 设置选中项的文本颜色、字号、字体粗细、最大字号、最小字号、超长文本截断方式。<br/>默认值:<br/>{<br/>color: '#ff007dff',<br/>font: {<br/>size: '20fp', <br/>weight: FontWeight.Medium<br/>},<br/>minFontSize: 0,<br/>maxFontSize: 0,<br/>overflow: TextOverflow.CLIP<br/>} |
124
125
126
127## TextPickerResult对象说明
128
129文本选择器结果。
130
131**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
132
133**系统能力:** SystemCapability.ArkUI.ArkUI.Full
134
135| 名称 | 类型 | 只读 | 可选 | 说明 |
136| -------- | -------- | -------- | -------- | -------- |
137| value | string \| string []<sup>10+</sup> | 否 | 否 | 选中项的文本内容。<br/>**说明**:当显示文本或图片加文本列表时,value值为选中项中的文本值。(文本选择器显示多列时,value为数组类型。)<br/>当显示图片列表时,value值为空。<br/>value值不支持包含转义字符'\\'。 |
138| index | number \| number []<sup>10+</sup> | 否 | 否 | 选中项在选择范围数组中的索引值,索引从0开始。(文本选择器显示多列时,index为数组类型。) |
139
140## 示例
141
142>  **说明:**
143>
144> 推荐通过使用[UIContext](../arkts-apis-uicontext-uicontext.md)中的[showTextPickerDialog](../arkts-apis-uicontext-uicontext.md#showtextpickerdialog)来明确UI的执行上下文。
145
146### 示例1(弹出文本选择弹窗)
147
148该示例通过点击按钮弹出文本选择弹窗。
149
150```ts
151// xxx.ets
152@Entry
153@Component
154struct TextPickerDialogExample {
155  private select: number | number[] = 0;
156  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'];
157  @State v: string = '';
158
159  build() {
160    Row() {
161      Column() {
162        Button("TextPickerDialog:" + this.v)
163          .margin(20)
164          .onClick(() => {
165            this.getUIContext().showTextPickerDialog({
166              range: this.fruits,
167              selected: this.select,
168              value: this.v,
169              defaultPickerItemHeight: 40,
170              onAccept: (value: TextPickerResult) => {
171                // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项
172                this.select = value.index;
173                console.info(this.select + '');
174                // 点击确定后,被选到的文本数据展示到页面
175                this.v = value.value as string;
176                console.info("TextPickerDialog:onAccept()" + JSON.stringify(value));
177              },
178              onCancel: () => {
179                console.info("TextPickerDialog:onCancel()");
180              },
181              onChange: (value: TextPickerResult) => {
182                console.info("TextPickerDialog:onChange()" + JSON.stringify(value));
183              },
184              onScrollStop: (value: TextPickerResult) => {
185                console.info("TextPickerDialog:onScrollStop()" + JSON.stringify(value));
186              },
187              onDidAppear: () => {
188                console.info("TextPickerDialog:onDidAppear()");
189              },
190              onDidDisappear: () => {
191                console.info("TextPickerDialog:onDidDisappear()");
192              },
193              onWillAppear: () => {
194                console.info("TextPickerDialog:onWillAppear()");
195              },
196              onWillDisappear: () => {
197                console.info("TextPickerDialog:onWillDisappear()");
198              }
199            });
200          })
201      }.width('100%')
202    }.height('100%')
203  }
204}
205```
206
207![TextPickerDialog](figures/TextPickerDialog.gif)
208
209
210### 示例2(自定义样式)
211
212该示例通过配置disappearTextStyle、textStyle、selectedTextStyle、acceptButtonStyle、cancelButtonStyle实现了自定义文本和按钮样式。
213
214```ts
215// xxx.ets
216@Entry
217@Component
218struct TextPickerDialogExample {
219  private select: number | number[] = 0;
220  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'];
221  @State v: string = '';
222
223  build() {
224    Row() {
225      Column() {
226        Button("TextPickerDialog:" + this.v)
227          .margin(20)
228          .onClick(() => {
229            this.getUIContext().showTextPickerDialog({
230              range: this.fruits,
231              selected: this.select,
232              disappearTextStyle: { color: '#297bec', font: { size: 15, weight: FontWeight.Lighter } },
233              textStyle: { color: Color.Black, font: { size: 20, weight: FontWeight.Normal } },
234              selectedTextStyle: { color: Color.Blue, font: { size: 30, weight: FontWeight.Bolder } },
235              acceptButtonStyle: {
236                type: ButtonType.Normal,
237                style: ButtonStyleMode.NORMAL,
238                role: ButtonRole.NORMAL,
239                fontColor: 'rgb(81, 81, 216)',
240                fontSize: '26fp',
241                fontWeight: FontWeight.Bolder,
242                fontStyle: FontStyle.Normal,
243                fontFamily: 'sans-serif',
244                backgroundColor: '#A6ACAF',
245                borderRadius: 20
246              },
247              cancelButtonStyle: {
248                type: ButtonType.Normal,
249                style: ButtonStyleMode.NORMAL,
250                role: ButtonRole.NORMAL,
251                fontColor: Color.Blue,
252                fontSize: '16fp',
253                fontWeight: FontWeight.Normal,
254                fontStyle: FontStyle.Italic,
255                fontFamily: 'sans-serif',
256                backgroundColor: '#50182431',
257                borderRadius: 10
258              },
259              onAccept: (value: TextPickerResult) => {
260                // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项
261                this.select = value.index;
262                console.info(this.select + '');
263                // 点击确定后,被选到的文本数据展示到页面
264                this.v = value.value as string;
265                console.info("TextPickerDialog:onAccept()" + JSON.stringify(value));
266              },
267              onCancel: () => {
268                console.info("TextPickerDialog:onCancel()");
269              },
270              onChange: (value: TextPickerResult) => {
271                console.info("TextPickerDialog:onChange()" + JSON.stringify(value));
272              },
273              onScrollStop: (value: TextPickerResult) => {
274                console.info("TextPickerDialog:onScrollStop()" + JSON.stringify(value));
275              },
276              onDidAppear: () => {
277                console.info("TextPickerDialog:onDidAppear()");
278              },
279              onDidDisappear: () => {
280                console.info("TextPickerDialog:onDidDisappear()");
281              },
282              onWillAppear: () => {
283                console.info("TextPickerDialog:onWillAppear()");
284              },
285              onWillDisappear: () => {
286                console.info("TextPickerDialog:onWillDisappear()");
287              }
288            });
289          })
290      }.width('100%')
291    }.height('100%')
292  }
293}
294```
295
296![TextPickerDialog](figures/TextPickerDialog_CustomButton.png)
297
298### 示例3(悬停态弹窗)
299
300该示例展示了在折叠屏悬停态下设置dialog布局区域的效果。
301
302```ts
303@Entry
304@Component
305struct TextPickerDialogExample {
306  private select: number | number[] = 0;
307  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'];
308  @State v: string = '';
309
310  build() {
311    Row() {
312      Column() {
313        Button("TextPickerDialog:" + this.v)
314          .margin(20)
315          .onClick(() => {
316            this.getUIContext().showTextPickerDialog({
317              range: this.fruits,
318              selected: this.select,
319              disappearTextStyle: { color: Color.Red, font: { size: 15, weight: FontWeight.Lighter }},
320              textStyle: { color: Color.Black, font: { size: 20, weight: FontWeight.Normal }},
321              selectedTextStyle: { color: Color.Blue, font: { size: 30, weight: FontWeight.Bolder }},
322              onAccept: (value: TextPickerResult) => {
323                // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项
324                this.select = value.index;
325                console.info(this.select + '');
326                // 点击确定后,被选到的文本数据展示到页面
327                this.v = value.value as string;
328                console.info("TextPickerDialog:onAccept()" + JSON.stringify(value));
329              },
330              onCancel: () => {
331                console.info("TextPickerDialog:onCancel()");
332              },
333              onChange: (value: TextPickerResult) => {
334                console.info("TextPickerDialog:onChange()" + JSON.stringify(value));
335              },
336              onScrollStop: (value: TextPickerResult) => {
337                console.info("TextPickerDialog:onScrollStop()" + JSON.stringify(value));
338              },
339              onDidAppear: () => {
340                console.info("TextPickerDialog:onDidAppear()");
341              },
342              onDidDisappear: () => {
343                console.info("TextPickerDialog:onDidDisappear()");
344              },
345              onWillAppear: () => {
346                console.info("TextPickerDialog:onWillAppear()");
347              },
348              onWillDisappear: () => {
349                console.info("TextPickerDialog:onWillDisappear()");
350              },
351              enableHoverMode: true,
352              hoverModeArea: HoverModeAreaType.TOP_SCREEN
353            });
354          })
355      }.width('100%')
356    }.height('100%')
357  }
358}
359```
360
361![TextPickerDialog](figures/TextPickerDialog_HoverMode.gif)
362
363### 示例4(设置弹窗位置)
364
365该示例通过alignment、offset设置弹窗的位置。
366
367```ts
368// xxx.ets
369@Entry
370@Component
371struct TextPickerDialogExample {
372  private select: number | number[] = 0;
373  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'];
374  @State v: string = '';
375
376  build() {
377    Row() {
378      Column() {
379        Button("TextPickerDialog:" + this.v)
380          .margin(20)
381          .onClick(() => {
382            this.getUIContext().showTextPickerDialog({
383              range: this.fruits,
384              selected: this.select,
385              alignment: DialogAlignment.Center,
386              offset: { dx: 20, dy: 0 },
387              onAccept: (value: TextPickerResult) => {
388                // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项
389                this.select = value.index;
390                console.info(this.select + '');
391                // 点击确定后,被选到的文本数据展示到页面
392                this.v = value.value as string;
393                console.info("TextPickerDialog:onAccept()" + JSON.stringify(value));
394              }
395            });
396          })
397      }.width('100%')
398    }.height('100%')
399  }
400}
401```
402
403![TextPickerDialog](figures/TextPickerDialogDemo4.png)
404
405### 示例5(设置遮蔽区)
406
407该示例通过maskRect设置遮蔽区。
408
409```ts
410// xxx.ets
411@Entry
412@Component
413struct TextPickerDialogExample {
414  private select: number | number[] = 0;
415  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'];
416  @State v: string = '';
417
418  build() {
419    Row() {
420      Column() {
421        Button("TextPickerDialog:" + this.v)
422          .margin(20)
423          .onClick(() => {
424            this.getUIContext().showTextPickerDialog({
425              range: this.fruits,
426              selected: this.select,
427              maskRect: {
428                x: 30,
429                y: 60,
430                width: '100%',
431                height: '60%'
432              },
433              onAccept: (value: TextPickerResult) => {
434                // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项
435                this.select = value.index;
436                console.info(this.select + '');
437                // 点击确定后,被选到的文本数据展示到页面
438                this.v = value.value as string;
439                console.info("TextPickerDialog:onAccept()" + JSON.stringify(value));
440              }
441            });
442          })
443      }.width('100%')
444    }.height('100%')
445  }
446}
447```
448
449![TextPickerDialog](figures/TextPickerDialogDemo5.png)
450
451### 示例6(设置弹窗背板)
452
453该示例通过backgroundColor、backgroundBlurStyle和shadow设置弹窗背板。
454
455```ts
456// xxx.ets
457@Entry
458@Component
459struct TextPickerDialogExample {
460  private select: number | number[] = 0;
461  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'];
462  @State v: string = '';
463
464  build() {
465    Row() {
466      Column() {
467        Button("TextPickerDialog:" + this.v)
468          .margin(20)
469          .onClick(() => {
470            this.getUIContext().showTextPickerDialog({
471              range: this.fruits,
472              selected: this.select,
473              backgroundColor: 'rgb(204, 226, 251)',
474              backgroundBlurStyle: BlurStyle.NONE,
475              shadow: ShadowStyle.OUTER_FLOATING_SM,
476              onAccept: (value: TextPickerResult) => {
477                // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项
478                this.select = value.index;
479                console.info(this.select + '');
480                // 点击确定后,被选到的文本数据展示到页面
481                this.v = value.value as string;
482                console.info("TextPickerDialog:onAccept()" + JSON.stringify(value));
483              }
484            });
485          })
486      }.width('100%')
487    }.height('100%')
488  }
489}
490```
491
492![TextPickerDialog](figures/TextPickerDialogDemo6.png)
493
494
495### 示例7(设置循环滚动)
496
497该示例通过配置canLoop设置是否循环滚动。
498
499```ts
500// xxx.ets
501@Entry
502@Component
503struct TextPickerDialogExample {
504  private select: number | number[] = 0;
505  private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'];
506  @State v: string = '';
507
508  build() {
509    Row() {
510      Column() {
511        Button("TextPickerDialog:" + this.v)
512          .margin(20)
513          .onClick(() => {
514            this.getUIContext().showTextPickerDialog({
515              range: this.fruits,
516              selected: this.select,
517              value: this.v,
518              canLoop: false,
519              onAccept: (value: TextPickerResult) => {
520                // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项
521                this.select = value.index;
522                console.info(this.select + '');
523                // 点击确定后,被选到的文本数据展示到页面
524                this.v = value.value as string;
525                console.info("TextPickerDialog:onAccept()" + JSON.stringify(value));
526              }
527            });
528          })
529      }.width('100%')
530    }.height('100%')
531  }
532}
533```
534
535![TextPickerDialog](figures/TextPickerDialogDemo7.gif)
536
537### 示例8(设置选中项的背景样式)
538
539该示例通过selectedBackgroundStyle属性设置文本选择器选中项的背景样式。
540
541```ts
542// xxx.ets
543@Entry
544@Component
545struct TextPickerExample {
546  private showText1: string [] = ['Text1', 'Text1', 'Text1', 'Text1']
547  build() {
548    Column() {
549      Row() {
550        Button("TextPickerDialog")
551          .margin(20)
552          .onClick(() => {
553            this.getUIContext().showTextPickerDialog({
554              range: this.showText1,
555              selectedBackgroundStyle: {
556                borderRadius: {
557                  topLeft:15,
558                  topRight:15,
559                  bottomLeft:15,
560                  bottomRight:15
561                },
562                color: "FFC3C3C3"
563              }
564            })
565          })
566      }
567    }.height('100%')
568  }
569}
570```
571
572![TextPickerDialog](figures/TextPickerDialogDemo8.gif)
573
574### 示例9(自定义背景模糊效果参数)
575
576从API version 19开始,该示例通过配置[backgroundBlurStyleOptions](#textpickerdialogoptions对象说明),实现自定义背景模糊效果。
577
578```ts
579@Entry
580@Component
581struct TextPickerExample {
582  private showText1: string [] = ['Text1', 'Text1', 'Text1', 'Text1']
583
584  build() {
585    Stack({ alignContent: Alignment.Top }) {
586      Image($r('app.media.bg'))
587      Column() {
588        Button("TextPickerDialog")
589          .margin(20)
590          .onClick(() => {
591            this.getUIContext().showTextPickerDialog({
592              range: this.showText1,
593              backgroundColor: undefined,
594              backgroundBlurStyle: BlurStyle.Thin,
595              backgroundBlurStyleOptions: {
596                colorMode: ThemeColorMode.LIGHT,
597                adaptiveColor: AdaptiveColor.AVERAGE,
598                scale: 1,
599                blurOptions: { grayscale: [20, 20] },
600              },
601            })
602          })
603      }.width('100%')
604    }
605  }
606}
607```
608
609![TextPickerDialog](figures/TextPickerDialog_BackgroundBlurStyleOptions.png)
610
611### 示例10(自定义背景效果参数)
612
613从API version 19开始,该示例通过配置[backgroundEffect](#textpickerdialogoptions对象说明),实现自定义背景效果。
614
615```ts
616@Entry
617@Component
618struct TextPickerExample {
619  private showText1: string [] = ['Text1', 'Text1', 'Text1', 'Text1']
620
621  build() {
622    Stack({ alignContent: Alignment.Top }) {
623      Image($r('app.media.bg'))
624      Column() {
625        Button("TextPickerDialog")
626          .margin(20)
627          .onClick(() => {
628            this.getUIContext().showTextPickerDialog({
629              range: this.showText1,
630              backgroundColor: undefined,
631              backgroundBlurStyle: BlurStyle.Thin,
632              backgroundEffect: {
633                radius: 60,
634                saturation: 0,
635                brightness: 1,
636                color: Color.White,
637                blurOptions: { grayscale: [20, 20] }
638              },
639            })
640          })
641      }.width('100%')
642    }
643  }
644}
645```
646
647![TextPickerDialog](figures/TextPickerDialog_BackgroundEffect.png)