harmony 鸿蒙Select

  • 2025-06-12
  • 浏览 (3)

Select

提供下拉选择菜单,让用户在多个选项间选择。

说明:

该组件从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

接口

Select(options: Array<SelectOption>)

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
options Array<SelectOption> 设置下拉选项。

SelectOption对象说明

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 必填 说明
value ResourceStr 下拉选项内容。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
icon ResourceStr 下拉选项图片。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
symbolIcon12+ SymbolGlyphModifier 下拉选项Symbol图片。
symbolIcon优先级高于icon。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

属性

除支持通用属性外,还支持以下属性:

selected

selected(value: number|Resource)

设置下拉菜单初始选项的索引,第一项的索引为0。当不设置selected属性或设置为异常值时,默认选中值为-1,菜单项不选中;当设置为undefined、null时,选中第一项。

从API version 10开始,该属性支持$$双向绑定变量。 从API version 18开始,该属性支持!!双向绑定变量。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value number&nbsp;|&nbsp;Resource11+ 下拉菜单初始选项的索引,索引值从0开始。

selected18+

selected(numCount: Optional)

设置下拉菜单初始选项的索引,第一项的索引为0。当不设置selected属性或设置异常值时,默认选择值为-1,菜单项不选中;当设置为undefined、null时,选中第一项。

该属性支持$$!!双向绑定变量。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
numCount Optional<number&nbsp;|&nbsp;Resource> 下拉菜单初始选项的索引。
当numCount的值为undefined时,选中第一项。

value

value(value: ResourceStr)

设置下拉按钮的文本内容。选中菜单项后,按钮文本将自动更新为选中的菜单项文本。

从API version 10开始,该参数支持$$双向绑定变量。 从API version 18开始,该参数支持!!双向绑定变量。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ResourceStr11+ 下拉按钮本身的文本内容。
说明: 文本长度大于列宽时,文本被截断。

value18+

value(resStr: Optional<ResourceStr>)

设置下拉按钮的文本内容。选中菜单项后,按钮文本将自动更新为选中的菜单项文本。与value相比,resStr参数新增了对undefined类型的支持。

该参数支持$$!!双向绑定变量。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
resStr Optional<ResourceStr> 下拉按钮本身的文本内容。
当resStr的值为undefined时维持上次取值。

controlSize12+

controlSize(value: ControlSize)

设置Select组件的尺寸。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ControlSize11+ Select组件的尺寸。
默认值:ControlSize.NORMAL

controlSize、width、height接口作用优先级:

1)如果开发者只设置了width和height,当文字大小设置为较大的值时,文字会超出组件大小,且以省略号方式显示;

2)如果开发者只设置了controlSize,没有设置width和height,组件宽高自适应文字,文字不超出组件,并设置最小宽度minWidth和最小高度minHeight;

3)如果同时设置了controlSize、width、height接口,width和height设置的值生效,但如果width和height设置的值小于controlSize设置的最小宽度minWidth和最小高度minHeight,width和height设置的值不生效,宽高仍保持controlSize设置的最小宽度minWidth和最小高度minHeight。

controlSize18+

controlSize(size: Optional<ControlSize>)

设置Select组件的尺寸。与controlSize12+相比,size参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
size Optional<ControlSize> Select组件的尺寸。
当size的值为undefined时,默认值为ControlSize.NORMAL。

controlSize、width、height接口作用优先级:

1)如果开发者只设置了width和height,当文字大小设置的是比较大的值的时候,文字超出组件大小,且以省略号方式显示;

2)如果开发者只设置了controlSize,没有设置width和height,组件宽高自适应文字,文字不超出组件,并设置最小宽度minWidth和最小高度minHeight;

3)如果controlSize、width、height接口都设置了,width和height设置的值生效,但如果width和height设置的值小于controlSize设置的最小宽度minWidth和最小高度minHeight,width和height设置的值不生效,宽高仍保持controlSize设置的最小宽度minWidth和最小高度minHeight。

menuItemContentModifier12+

menuItemContentModifier(modifier: ContentModifier<MenuItemConfiguration>)

定制Select下拉菜单项内容区的方法。在应用了menuItemContentModifier后,下拉菜单的内容将完全由开发者自定义,此时为Select组件设置的分割线、选项颜色及下拉菜单的字体颜色等属性将不再生效。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
modifier ContentModifier<MenuItemConfiguration> 在Select组件上,定制下拉菜单项内容区的方法。
modifier:内容修改器,开发者需要自定义class实现ContentModifier接口。

menuItemContentModifier18+

menuItemContentModifier(modifier: Optional<ContentModifier<MenuItemConfiguration>>)

定制Select下拉菜单项内容区的方法。与menuItemContentModifier12+相比,modifier参数新增了对undefined类型的支持。在应用了menuItemContentModifier后,下拉菜单的内容将完全由开发者自定义,此时为Select组件设置的分割线、选项颜色及下拉菜单的字体颜色等属性将不再生效。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
modifier Optional<ContentModifier<MenuItemConfiguration>> 在Select组件上,定制下拉菜单项内容区的方法。
modifier:内容修改器,开发者需要自定义class实现ContentModifier接口。
当modifier的值为undefined时,不使用内容修改器。

divider12+

divider(options: Optional<DividerOptions>|null)

设置分割线样式,不设置该属性则按“默认值”展示分割线。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
options Optional<DividerOptions> |null 1.设置DividerOptions,则按设置的样式显示分割线。
默认值:
{
strokeWidth: ‘1px’ ,
color: ‘#33182431’
}
2.设置为null时,不显示分割线。
3.strokeWidth设置过宽时,会覆盖文字。分割线会从每一个Item底部开始,同时向上向下画分割线。
4.startMargin和endMargin的默认值与不设置divider属性时的分割线样式保持一致。startMargin和endMargin的和与optionWidth的值相等时,不显示分割线。 startMargin和endMargin的和超过optionWidth的值时,按照默认样式显示分割线。

dividerStyle19+

dividerStyle(style: Optional<DividerStyleOptions>)

设置分割线样式,不设置该属性则按“默认值”展示分割线。该属性与divider互斥,按调用顺序生效。

原子化服务API: 从API version 19开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
style Optional<DividerStyleOptions> 1.设置DividerOptions,则按设置的样式显示分割线。
默认值:
{
strokeWidth: ‘1px’ ,
color: ‘#33182431’
}
2.设置为null或undefined时,展示默认分割线。
3.当mode为FLOAT_ABOVE_MENU时,strokeWidth设置过宽时,会覆盖文字。分割线会从每一个Item底部开始,同时向上向下画分割线。当mode为EMBEDDED_IN_MENU时,分割线在Menu中展开,独立占用高度。
4.startMargin和endMargin的默认值与不设置divider属性时的分割线样式保持一致。startMargin和endMargin的和与optionWidth的值相等时,不显示分割线。startMargin和endMargin的和超过optionWidth的值时,按照默认样式显示分割线。

font

font(value: Font)

设置下拉按钮本身的文本样式。当size为0时,文本不显示,当size为负值时,文本的size按照默认值显示。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value Font 下拉按钮本身的文本样式。
API Version 11及以前默认值:
{
size:&nbsp;$r('sys.float.ohos_id_text_size_button1'),
weight:&nbsp;FontWeight.Medium
}
API Version 12以后,如果设置controlSize的值为:controlSize.SMALL,size默认值是$r('sys.float.ohos_id_text_size_button2'),否则为$r('sys.float.ohos_id_text_size_button1')

font18+

font(selectFont: Optional<Font>)

设置下拉按钮本身的文本样式。当size为0时,文本不显示,当size为负值时,文本的size按照默认值显示。与font相比,selectFont参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
selectFont Optional<Font> 下拉按钮本身的文本样式。
如果设置controlSize的值为:controlSize.SMALL,size默认值是$r('sys.float.ohos_id_text_size_button2'),否则为$r('sys.float.ohos_id_text_size_button1')
当selectFont的值为undefined时,恢复为系统文本样式。

fontColor

fontColor(value: ResourceColor)

设置下拉按钮本身的文本颜色。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ResourceColor 下拉按钮本身的文本颜色。
默认值:$r('sys.color.ohos_id_color_text_primary')混合$r('sys.color.ohos_id_alpha_content_primary')的透明度。

fontColor18+

fontColor(resColor: Optional<ResourceColor>)

设置下拉按钮本身的文本颜色。与fontColor相比,resColor参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
resColor Optional<ResourceColor> 下拉按钮本身的文本颜色。
当resColor的值为undefined时,默认值:$r('sys.color.ohos_id_color_text_primary')混合$r('sys.color.ohos_id_alpha_content_primary')的透明度。
当value的值为undefined时,维持上次取值。

selectedOptionBgColor

selectedOptionBgColor(value: ResourceColor)

设置下拉菜单选中项的背景色。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ResourceColor 下拉菜单选中项的背景色。
默认值:$r('sys.color.ohos_id_color_component_activated')混合$r('sys.color.ohos_id_alpha_highlight_bg')的透明度。

selectedOptionBgColor18+

selectedOptionBgColor(resColor: Optional<ResourceColor>)

设置下拉菜单选中项的背景色。与selectedOptionBgColor相比,resColor参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
resColor Optional<ResourceColor> 下拉菜单选中项的背景色。
当resColor的值为undefined时,默认值:$r('sys.color.ohos_id_color_component_activated')混合$r('sys.color.ohos_id_alpha_highlight_bg')的透明度。

selectedOptionFont

selectedOptionFont(value: Font)

设置下拉菜单选中项的文本样式。当size为0的时候,文本不显示,当size为负值的时候,文本的size按照默认值显示。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value Font 下拉菜单选中项的文本样式。
默认值:
{
size:&nbsp;$r(‘sys.float.ohos_id_text_size_body1’),
weight:&nbsp;FontWeight.Regular
}

selectedOptionFont18+

selectedOptionFont(selectFont: Optional<Font>)

设置下拉菜单选中项的文本样式。当size为0的时候,文本不显示,当size为负值的时候,文本的size按照默认值显示。与selectedOptionFont相比,selectFont参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
selectFont Optional<Font> 下拉菜单选中项的文本样式。
当selectFont的值为undefined时,默认值:
{
size:&nbsp;$r(‘sys.float.ohos_id_text_size_body1’),
weight:&nbsp;FontWeight.Regular
}

selectedOptionFontColor

selectedOptionFontColor(value: ResourceColor)

设置下拉菜单选中项的文本颜色。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ResourceColor 下拉菜单选中项的文本颜色。
默认值:$r(‘sys.color.ohos_id_color_text_primary_activated’)

selectedOptionFontColor18+

selectedOptionFontColor(resColor: Optional<ResourceColor>)

设置下拉菜单选中项的文本颜色。与selectedOptionFontColor相比,resColor参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
resColor Optional<ResourceColor> 下拉菜单选中项的文本颜色。
当resColor的值为undefined时,默认值为$r(‘sys.color.ohos_id_color_text_primary_activated’)。

optionBgColor

optionBgColor(value: ResourceColor)

设置下拉菜单项的背景色。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ResourceColor 下拉菜单项的背景色。
默认值:
API version 11之前,默认值为Color.White。
API version 11及之后,默认值为Color.Transparent。

optionBgColor18+

optionBgColor(resColor: Optional<ResourceColor>)

设置下拉菜单项的背景色。与optionBgColor相比,resColor参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
resColor Optional<ResourceColor> 下拉菜单项的背景色。
当resColor的值为undefined时,默认值为Color.Transparent。

optionFont

optionFont(value: Font)

设置下拉菜单项的文本样式。当size为0的时候,文本不显示,当size为负值的时候,文本的size按照默认值显示。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value Font 下拉菜单项的文本样式。
默认值:
{
size:&nbsp;$r(‘sys.float.ohos_id_text_size_body1’),
weight:&nbsp;FontWeight.Regular
}

optionFont18+

optionFont(selectFont: Optional<Font>)

设置下拉菜单项的文本样式。当size为0的时候,文本不显示,当size为负值的时候,文本的size按照默认值显示。

optionFont相比,selectFont参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
selectFont Optional<Font> 下拉菜单项的文本样式。
当selectFont的值为undefined时,默认值:
{
size:&nbsp;$r(‘sys.float.ohos_id_text_size_body1’),
weight:&nbsp;FontWeight.Regular
}

optionFontColor

optionFontColor(value: ResourceColor)

设置下拉菜单项的文本颜色。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ResourceColor 下拉菜单项的文本颜色。
默认值:$r(‘sys.color.ohos_id_color_text_primary’)

optionFontColor18+

optionFontColor(resColor: Optional<ResourceColor>)

设置下拉菜单项的文本颜色。与optionFontColor相比,resColor参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
resColor Optional<ResourceColor> 下拉菜单项的文本颜色。
当resColor的值为undefined时,默认值:$r(‘sys.color.ohos_id_color_text_primary’)

space10+

space(value: Length)

设置下拉菜单项的文本与箭头的间距。不支持设置百分比。将间距设置为null、undefined,或者小于等于8的值时,取默认值。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value Length 下拉菜单项的文本与箭头的间距。
默认值:8
说明: 设置string类型时,不支持百分比。

space18+

space(spaceLength: Optional<Length>)

设置下拉菜单项的文本与箭头的间距。不支持设置百分比。设置为null、undefined,或者小于等于8的值,取默认值。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
spaceLength Optional<Length> 下拉菜单项的文本与箭头之间的间距。
当spaceLength的值为undefined时,默认值:8

arrowPosition10+

arrowPosition(value: ArrowPosition)

设置下拉菜单项的文本与箭头之间的对齐方式。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ArrowPosition 下拉菜单项的文本与箭头之间的对齐方式。
默认值:ArrowPosition.END

arrowPosition18+

arrowPosition(position: Optional<ArrowPosition>)

设置下拉菜单项的文本与箭头之间的对齐方式。与arrowPosition相比,position参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
position Optional<ArrowPosition> 下拉菜单项的文本与箭头之间的对齐方式。
当position的值为undefined时,默认值:ArrowPosition.END

menuAlign10+

menuAlign(alignType: MenuAlignType, offset?: Offset)

设置下拉按钮与下拉菜单间的对齐方式。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
alignType MenuAlignType 对齐方式类型。
默认值:MenuAlignType.START
offset Offset 按照对齐类型对齐后,下拉菜单相对下拉按钮的偏移量。
默认值:{dx: 0, dy: 0}

menuAlign18+

menuAlign(alignType: Optional<MenuAlignType>, offset?: Offset)

设置下拉按钮与下拉菜单间的对齐方式。与menuAlign10+相比,alignType参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
alignType Optional<MenuAlignType> 对齐方式类型。
当alignType的值为undefined时,默认值:MenuAlignType.START
offset Offset 按照对齐类型对齐后,下拉菜单相对下拉按钮的偏移量。
默认值:{dx: 0, dy: 0}

optionWidth11+

optionWidth(value: Dimension|OptionWidthMode )

设置下拉菜单项的宽度,不支持设置百分比。OptionWidthMode类型为枚举类型,OptionWidthMode决定下拉菜单是否继承下拉按钮宽度。

当设置为异常值或小于最小宽度56vp时,属性无效,菜单项宽度设为默认值,即2栅格。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value Dimension&nbsp;|&nbsp;OptionWidthMode 下拉菜单项的宽度。

optionWidth18+

optionWidth(width: Optional<Dimension|OptionWidthMode> )

设置下拉菜单项的宽度,不支持设置百分比。OptionWidthMode类型为枚举类型,OptionWidthMode决定下拉菜单是否继承下拉按钮宽度。与optionWidth11+相比,width参数新增了对undefined类型的支持。

当设置为异常值或小于最小宽度56vp时,属性无效,菜单项宽度设为默认值,即2栅格。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
width Optional<Dimension&nbsp;|&nbsp;OptionWidthMode> 下拉菜单项的宽度。
当width的值为undefined时,属性无效,菜单项宽度设为默认值,即2栅格。

optionHeight11+

optionHeight(value: Dimension)

设置下拉菜单显示的最大高度,不支持设置百分比。默认最大高度是屏幕可用高度的80%,设置的菜单最大高度不能超过默认最大高度。

当设置为异常值或零时,属性不生效,下拉菜单最大高度设为默认值,即下拉菜单最大高度默认值为屏幕可用高度的80%。

如果下拉菜单所有选项的实际高度没有设定的高度大,下拉菜单的高度按实际高度显示。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value Dimension 下拉菜单显示的最大高度。

optionHeight18+

optionHeight(height: Optional<Dimension>)

设置下拉菜单显示的最大高度,不支持设置百分比。默认最大高度是屏幕可用高度的80%,设置的菜单最大高度不能超过默认最大高度。与optionHeight11+相比,height参数新增了对undefined类型的支持。

当设置为异常值或零时,属性不生效,下拉菜单最大高度设为默认值,即下拉菜单最大高度默认值为屏幕可用高度的80%。

如果下拉菜单所有选项的实际高度小于设定的高度,下拉菜单的高度按实际高度显示。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
height Optional<Dimension> 下拉菜单显示的最大高度。
当height的值为undefined时,属性不生效,下拉菜单最大高度设为默认值,即下拉菜单最大高度默认值为屏幕可用高度的80%。

menuBackgroundColor11+

menuBackgroundColor(value: ResourceColor)

设置下拉菜单的背景色。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value ResourceColor 下拉菜单的背景色。
默认值:
API version 11之前,默认值为$r(‘sys.color.ohos_id_color_card_bg’)。
API version 11及之后,默认值为Color.Transparent。

menuBackgroundColor18+

menuBackgroundColor(resColor: Optional<ResourceColor>)

设置下拉菜单的背景色。与menuBackgroundColor11+相比,resColor参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
resColor Optional<ResourceColor> 下拉菜单的背景色。
当resColor的值为undefined时,默认值为Color.Transparent。

menuBackgroundBlurStyle11+

menuBackgroundBlurStyle(value: BlurStyle)

设置下拉菜单的背景模糊材质。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
value BlurStyle 下拉菜单的背景模糊材质。
默认值:BlurStyle.COMPONENT_ULTRA_THICK

menuBackgroundBlurStyle18+

menuBackgroundBlurStyle(style: Optional<BlurStyle>)

设置下拉菜单的背景模糊材质。与menuBackgroundBlurStyle11+相比,style参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
style Optional<BlurStyle> 下拉菜单的背景模糊材质。
当style的值为undefined时,默认值:BlurStyle.COMPONENT_ULTRA_THICK

avoidance19+

avoidance(mode: AvoidanceMode)

设置下拉菜单的避让模式。

原子化服务API: 从API version 19开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
mode AvoidanceMode 设置下拉菜单的避让模式。
默认值:AvoidanceMode.COVER_TARGET

menuOutline20+

menuOutline(outline: MenuOutlineOptions)

设置下拉菜单框的外描边样式。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
outline MenuOutlineOptions 下拉菜单框的外描边样式。

showDefaultSelectedIcon20+

showDefaultSelectedIcon(show: boolean)

设置是否显示默认选择的图标。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
show boolean 是否显示默认选定的图标。
默认值为false,true代表显示默认选择的图标,false代表不显示默认选择的图标。
当show为true,并且通过selectedOptionBgColor设置选中项的背景色时,同时显示所设置的选中项的背景色和默认选定的图标;当show为true,但未通过selectedOptionBgColor设置选中项的背景色时,不突出显示背景色,只显示默认选定的图标。false代表不显示默认选定的图标,通过突出显示背景色来表示选中。

textModifier20+

textModifier(modifier: Optional<TextModifier>)

定制Select按钮文本样式的方法,在应用了textModifier之后,Select按钮的文本样式将完全由开发者自定义。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
modifier Optional<TextModifier> 在Select组件上,定制按钮文本样式的方法。

arrowModifier20+

arrowModifier(modifier: Optional<SymbolGlyphModifier>)

定制Select按钮下拉箭头图标样式的方法,在应用arrowModifier之后,Select按钮下拉箭头的图标样式将完全由开发者自定义。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
modifier Optional<SymbolGlyphModifier> 在Select组件上,定制Select按钮下拉箭头图标样式的方法。

optionTextModifier20+

optionTextModifier(modifier: Optional<TextModifier>)

定制Select下拉菜单未选中项文本样式的方法,在应用optionTextModifier之后,下拉菜单未选中项的文本样式将完全由开发者自定义。

如果optionFont与optionTextModifier的Font属性同时设置,则优先使用optionFont设置下拉菜单未选中项的文本样式;optionFont中缺省的属性将设置为对应的默认值。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
modifier Optional<TextModifier> 在Select组件上,定制Select下拉菜单未选中项样式的方法。

selectedOptionTextModifier20+

selectedOptionTextModifier(modifier: Optional<TextModifier>)

定制Select下拉菜单选中项文本样式的方法,在应用selectedOptionTextModifier之后,下拉菜单选中项的文本样式将完全由开发者自定义。

如果selectedOptionFont与selectedOptionTextModifier的Font属性同时设置,则优先使用selectedOptionFont设置下拉菜单选中项的文本样式;若未设置selectedOptionFont,则优先使用optionFont设置下拉菜单选中项的文本样式。其中selectedOptionFont或者optionFont缺省的属性将设置为对应的默认值。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
modifier Optional<TextModifier> 设置下拉菜单项选中项的文本样式。
开发者可以根据需要管理和维护文本的样式进行设置。

showInSubWindow20+

showInSubWindow(showInSubWindow:Optional<boolean>)

设置Select的Menu是否显示在子窗中。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
showInSubWindow Optional<boolean> 设置Select的Menu是否显示在子窗中。
true代表Select的Menu显示在子窗中,仅对2in1设备生效。
false代表Select的Menu不显示在子窗中。
默认值:2in1设备为true,其他设备为false。

ArrowPosition10+枚举说明

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 说明
END 0 文字在前,箭头在后。
START 1 箭头在前,文字在后。

MenuAlignType10+枚举说明

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 说明
START 0 按照语言方向起始端对齐。
CENTER 1 居中对齐。
END 2 按照语言方向末端对齐。

AvoidanceMode19+枚举说明

下拉菜单避让模式的枚举选项。

原子化服务API: 从API version 19开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 说明
COVER_TARGET 目标组件下方无足够空间时,覆盖目标组件。
AVOID_AROUND_TARGET 目标组件四周无足够空间时,在最大空间处压缩显示(可滚动)。

MenuItemConfiguration12+对象说明

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 必填 说明
value ResourceStr 下拉菜单项的文本内容。
说明: 当文本字符的长度超过菜单项文本区域的宽度时,文本将会被截断。
icon ResourceStr 下拉菜单项的图片内容。
说明: string格式可用于加载网络图片和本地图片。
symbolIcon12+ SymbolGlyphModifier 下拉选项Symbol图片内容。
selected boolean 下拉菜单项是否被选中。值为true表示选中,值为false表示未选中。
默认值:false
index number 下拉菜单项的索引,索引值从0开始。
triggerSelect (index: number, value: string) :void 下拉菜单选中某一项的回调函数。
index:选中菜单项的索引。
value:选中菜单项的文本。
说明:index会赋值给事件onSelect回调中的索引参数; value会返回给Select组件显示,同时会赋值给事件onSelect回调中的文本参数。

MenuOutlineOptions20+对象说明

下拉菜单框的外描边参数对象。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 必填 说明
width Dimension&nbsp;|&nbsp;EdgeOutlineWidths 设置外描边宽度,不支持百分比。
默认值:0
color ResourceColor&nbsp;|&nbsp;EdgeColors 设置外描边颜色。
默认值:#19ffffff

事件

onSelect

onSelect(callback: (index: number, value: string) => void)

下拉菜单选中某一项的回调。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
index number 选中项的索引,索引值从0开始。
value string 选中项的值。

onSelect18+

onSelect(callback: Optional<OnSelectCallback> )

下拉菜单选中某一项的回调。与onSelect相比,callback参数新增了对undefined类型的支持。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
callback Optional<OnSelectCallback> 下拉菜单选中某一项的回调。
当callback的值为undefined时,不使用回调函数。

OnSelectCallback18+

type OnSelectCallback = (index: number, selectStr: string) => void

下拉菜单选中某一项的回调。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
index number 选中项的索引,索引值从0开始。
selectStr string 选中项的值。

示例1(设置下拉菜单)

该示例通过配置SelectOptions实现下拉菜单。

// xxx.ets
@Entry
@Component
struct SelectExample {
  @State text: string = "TTTTT";
  @State index: number = 2;
  @State space: number = 8;
  @State arrowPosition: ArrowPosition = ArrowPosition.END;

  build() {
    Column() {
      Select([{ value: 'aaa', icon: $r("app.media.selection") },
        { value: 'bbb', icon: $r("app.media.selection") },
        { value: 'ccc', icon: $r("app.media.selection") },
        { value: 'ddd', icon: $r("app.media.selection") }])
        .selected(this.index)
        .value(this.text)
        .font({ size: 16, weight: 500 })
        .fontColor('#182431')
        .selectedOptionFont({ size: 16, weight: 400 })
        .optionFont({ size: 16, weight: 400 })
        .space(this.space)
        .arrowPosition(this.arrowPosition)
        .menuAlign(MenuAlignType.START, { dx: 0, dy: 0 })
        .optionWidth(200)
        .optionHeight(300)
        .onSelect((index: number, text?: string|undefined) => {
          console.info('Select:' + index);
          this.index = index;
          if (text) {
            this.text = text;
          }
        })
        .avoidance(AvoidanceMode.COVER_TARGET);
    }.width('100%')
  }
}

示例2(设置symbol类型图标)

该示例实现了一个下拉菜单中图片为Symbol的Select组件。

// xxx.ets
import { SymbolGlyphModifier } from '@kit.ArkUI';

@Entry
@Component
struct SelectExample {
  @State text: string = "TTTTT";
  @State index: number = 2;
  @State space: number = 8;
  @State arrowPosition: ArrowPosition = ArrowPosition.END;
  @State symbolModifier1: SymbolGlyphModifier =
    new SymbolGlyphModifier($r('sys.symbol.ohos_wifi')).fontColor([Color.Green]);
  @State symbolModifier2: SymbolGlyphModifier =
    new SymbolGlyphModifier($r('sys.symbol.ohos_star')).fontColor([Color.Red]);
  @State symbolModifier3: SymbolGlyphModifier =
    new SymbolGlyphModifier($r('sys.symbol.ohos_trash')).fontColor([Color.Gray]);
  @State symbolModifier4: SymbolGlyphModifier =
    new SymbolGlyphModifier($r('sys.symbol.exposure')).fontColor([Color.Gray]);

  build() {
    Column() {
      Select([{ value: 'aaa', symbolIcon: this.symbolModifier1 },
        { value: 'bbb', symbolIcon: this.symbolModifier2 },
        { value: 'ccc', symbolIcon: this.symbolModifier3 },
        { value: 'ddd', symbolIcon: this.symbolModifier4 }])
        .selected(this.index)
        .value(this.text)
        .font({ size: 16, weight: 500 })
        .fontColor('#182431')
        .selectedOptionFont({ size: 16, weight: 400 })
        .optionFont({ size: 16, weight: 400 })
        .space(this.space)
        .arrowPosition(this.arrowPosition)
        .menuAlign(MenuAlignType.START, { dx: 0, dy: 0 })
        .onSelect((index: number, text?: string|undefined) => {
          console.info('Select:' + index);
          this.index = index;
          if (text) {
            this.text = text;
          }
        })
        .avoidance(AvoidanceMode.COVER_TARGET);
    }.width('100%')
  }
}

示例3(自定义下拉菜单)

该示例实现了一个自定义下拉菜选项的Select组件。自定义下拉菜单选项样式为“文本 + Symbol图片 + 空白间隔 + 文本 + 绘制三角形”,点击菜单选项后Select组件显示菜单选项的文本内容。

import { SymbolGlyphModifier } from '@kit.ArkUI';

class MyMenuItemContentModifier implements ContentModifier<MenuItemConfiguration> {
  modifierText: string = "";

  constructor(text: string) {
    this.modifierText = text;
  }

  applyContent(): WrappedBuilder<[MenuItemConfiguration]> {
    return wrapBuilder(MenuItemBuilder);
  }
}

@Builder
function MenuItemBuilder(configuration: MenuItemConfiguration) {
  Row() {
    Text(configuration.value)
    Blank()
    if (configuration.symbolIcon) {
      SymbolGlyph().attributeModifier(configuration.symbolIcon).fontSize(24)
    } else if (configuration.icon) {
      Image(configuration.icon).size({ width: 24, height: 24 })
    }
    Blank(30)
    Text((configuration.contentModifier as MyMenuItemContentModifier).modifierText)
    Blank(30)
    Path()
      .width('100px')
      .height('150px')
      .commands('M40 0 L80 100 L0 100 Z')
      .fillOpacity(0)
      .stroke(Color.Black)
      .strokeWidth(3)
  }
  .onClick(() => {
    configuration.triggerSelect(configuration.index, configuration.value.valueOf().toString());
  })
}

@Entry
@Component
struct SelectExample {
  @State text: string = "Content Modifier Select";
  @State symbolModifier1: SymbolGlyphModifier =
    new SymbolGlyphModifier($r('sys.symbol.ohos_trash')).fontColor([Color.Gray]);
  @State symbolModifier2: SymbolGlyphModifier =
    new SymbolGlyphModifier($r('sys.symbol.exposure')).fontColor([Color.Gray]);

  build() {
    Column() {
      Row() {
        Select([{ value: 'item1', icon: $r('app.media.icon'), symbolIcon: this.symbolModifier1 },
          { value: 'item1', icon: $r('app.media.icon'), symbolIcon: this.symbolModifier2 }])
          .value(this.text)
          .onSelect((index: number, text?: string) => {
            console.info('Select index:' + index);
            console.info('Select text:' + text);
          })
          .menuItemContentModifier(new MyMenuItemContentModifier("Content Modifier"))

      }.alignItems(VerticalAlign.Center).height('50%')
    }
  }
}

示例4(设置分割线样式)

该示例通过配置divider的DividerOptions类型实现分割线样式的下拉菜单。

// xxx.ets
@Entry
@Component
struct SelectExample {
  @State text: string = "TTTTT";
  @State index: number = -1;
  @State arrowPosition: ArrowPosition = ArrowPosition.END;

  build() {
    Column() {
      Select([{ value: 'aaa', icon: $r("app.media.icon") },
        { value: 'bbb', icon: $r("app.media.icon") },
        { value: 'ccc', icon: $r("app.media.icon") },
        { value: 'ddd', icon: $r("app.media.icon") }])
        .selected(this.index)
        .value(this.text)
        .font({ size: 16, weight: 500 })
        .fontColor('#182431')
        .selectedOptionFont({ size: 16, weight: 400 })
        .optionFont({ size: 16, weight: 400 })
        .arrowPosition(this.arrowPosition)
        .menuAlign(MenuAlignType.START, { dx: 0, dy: 0 })
        .optionWidth(200)
        .optionHeight(300)
        .divider({
          strokeWidth: 5,
          color: Color.Blue,
          startMargin: 10,
          endMargin: 10
        })
        .onSelect((index: number, text?: string|undefined) => {
          console.info('Select:' + index);
          this.index = index;
          if (text) {
            this.text = text;
          }
        })
        .avoidance(AvoidanceMode.COVER_TARGET);
    }.width('100%')
  }
}

示例5(设置无分割线样式)

该示例通过配置divider为null实现无分割线样式的下拉菜单。

// xxx.ets
@Entry
@Component
struct SelectExample {
  @State text: string = "TTTTT";
  @State index: number = -1;
  @State arrowPosition: ArrowPosition = ArrowPosition.END;

  build() {
    Column() {
      Select([{ value: 'aaa', icon: $r("app.media.icon") },
        { value: 'bbb', icon: $r("app.media.icon") },
        { value: 'ccc', icon: $r("app.media.icon") },
        { value: 'ddd', icon: $r("app.media.icon") }])
        .selected(this.index)
        .value(this.text)
        .font({ size: 16, weight: 500 })
        .fontColor('#182431')
        .selectedOptionFont({ size: 16, weight: 400 })
        .optionFont({ size: 16, weight: 400 })
        .arrowPosition(this.arrowPosition)
        .menuAlign(MenuAlignType.START, { dx: 0, dy: 0 })
        .optionWidth(200)
        .optionHeight(300)
        .divider(null)
        .onSelect((index: number, text?: string|undefined) => {
          console.info('Select:' + index);
          this.index = index;
          if (text) {
            this.text = text;
          }
        })
        .avoidance(AvoidanceMode.COVER_TARGET);
    }.width('100%')
  }
}

示例6(设置Select中文本和箭头样式)

该示例通过textModifier和arrowModifier设置文本以及箭头样式。

import { TextModifier, SymbolGlyphModifier } from "@kit.ArkUI";

@Entry
@Component
struct SelectExample {
  @State text: string = "TTTTTTTTTT".repeat(3);
  @State index: number = 2;
  textModifier: TextModifier = new TextModifier();
  symbolGlyphModifier: SymbolGlyphModifier = new SymbolGlyphModifier();

  aboutToAppear(): void {
    this.textModifier
      .maxLines(2)
      .fontSize(18)
      .textAlign(TextAlign.Center)
      .fontColor('#333333')
      .fontWeight(FontWeight.Medium)
      .textOverflow({overflow:TextOverflow.Clip})

    this.symbolGlyphModifier
      .fontSize(25)
      .fontColor(['#999999'])
  }

  build() {
    Column() {
      Select([
        { value: 'A very long option text that should be truncated nicely'.repeat(3), icon: $r("app.media.startIcon") },
        { value: 'Option B', icon: $r("app.media.startIcon") },
        { value: 'Option C', icon: $r("app.media.startIcon") },
        { value: 'Option D', icon: $r("app.media.startIcon") }
      ])
        .selected(this.index)
        .value(this.text)
        .textModifier(this.textModifier)
        .arrowModifier(this.symbolGlyphModifier)
        .onSelect((index: number, text?: string) => {
          console.info('Select:' + index);
          this.index = index;
          if (text) {
            this.text = text;
          }
        })
        .width('90%')
        .margin({ top: 20,left:30 })
        .borderRadius(12)
        .width(200)
        .padding(9)
        .backgroundColor(Color.White)
        .shadow({ radius: 10, color: '#888888', offsetX: 0, offsetY: 10 })
    }
    .alignItems(HorizontalAlign.Start)
    .padding(10)
    .backgroundColor('#F0F2F5')
    .width('100%')
    .height('100%')
  }
}

示例7(设置Select下拉菜单选中和非选中项文本样式)

该示例通过optionTextModifier和selectedOptionTextModifier设置下拉菜单选中和非选中项文本样式。

import { TextModifier } from "@kit.ArkUI";

@Entry
@Component
struct SelectExample {
  @State text: string = "TTTTTTTTTT".repeat(3);
  @State index: number = 2;
  optiontextModifier: TextModifier = new TextModifier();
  selectedOptiontextModifier: TextModifier = new TextModifier();
  aboutToAppear(): void {
    this.optiontextModifier
      .maxLines(1)
      .fontSize(16)
      .textAlign(TextAlign.Start)
      .fontColor('#666666')
      .fontWeight(FontWeight.Normal)
      .width(200)

    this.selectedOptiontextModifier
      .maxLines(1)
      .fontSize(18)
      .textAlign(TextAlign.Start)
      .fontColor('#007BFF')
      .fontWeight(FontWeight.Bold)
      .width(200)
  }

  build() {
    Column() {
      Select([
        { value: 'A very long option text that should be truncated nicely'.repeat(3), icon: $r("app.media.startIcon") },
        { value: 'Option B', icon: $r("app.media.startIcon") },
        { value: 'Option C', icon: $r("app.media.startIcon") },
        { value: 'Option D', icon: $r("app.media.startIcon") }
      ])
        .selected(this.index)
        .value(this.text)
        .onSelect((index: number, text?: string) => {
          console.info('Select:' + index);
          this.index = index;
          if (text) {
            this.text = text;
          }
        })
        .optionTextModifier(this.optiontextModifier)
        .selectedOptionTextModifier(this.selectedOptiontextModifier)
        .width('90%')
        .margin({ top: 20,left:30 })
        .borderRadius(12)
        .width(200)
        .padding(9)
        .backgroundColor(Color.White)
        .shadow({ radius: 10, color: '#888888', offsetX: 0, offsetY: 10 })
    }
    .alignItems(HorizontalAlign.Start)
    .padding(10)
    .backgroundColor('#F0F2F5')
    .width('100%')
    .height('100%')
  }
}

示例8(设置分割线模式)

该示例通过配置dividerStyle的mode属性设置分割线模式。

import { LengthMetrics } from '@kit.ArkUI'

@Entry
@Component
struct Index {
  build() {
    RelativeContainer() {
      Select([{ value: "SelectItem" }, { value: "SelectItem" }, { value: "SelectItem" },])
        .value("请选择")
        .dividerStyle({
          strokeWidth: LengthMetrics.vp(5),
          color: '#d5d5d5',
          mode: DividerMode.EMBEDDED_IN_MENU
        })
    }
    .height('100%')
    .width('100%')
  }
}

dividerStyleMode

你可能感兴趣的鸿蒙文章

harmony 鸿蒙图像AI分析错误码

harmony 鸿蒙ArcButton

harmony 鸿蒙ArcSlider

harmony 鸿蒙Chip

harmony 鸿蒙ChipGroup

harmony 鸿蒙ComposeListItem

harmony 鸿蒙ComposeTitleBar

harmony 鸿蒙advanced.Counter

harmony 鸿蒙弹出框 (Dialog)

harmony 鸿蒙DialogV2

0  赞