文档管理中心

Slider

滑动条组件,通常用于快速调节设置值,如音量调节、亮度调节等应用场景。

说明

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

子组件

接口

Slider(options?: SliderOptions)

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
options SliderOptions 配置滑动条的参数。

SliderOptions对象说明

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

展开
名称 类型 必填 说明
value number

当前进度值。

默认值:与参数min的取值一致。

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

min number

设置最小值。

默认值:0

max number

设置最大值。

默认值:100

说明:

min >= max异常情况,min取默认值0,max取默认值100。

value不在[min, max]范围之内,取min或者max,靠近min取min,靠近max取max。

step number

设置Slider滑动步长。

默认值:1

取值范围:[0.01, max - min]

说明:

若设置的step值小于0或大于max值时,则按默认值显示。

style SliderStyle

设置Slider的滑块与滑轨显示样式。

默认值:SliderStyle.OutSet

direction8+ Axis

设置滑动条滑动方向为水平或竖直方向。

默认值:Axis.Horizontal

reverse8+ boolean

设置滑动条取值范围是否反向,横向Slider默认为从左往右滑动,竖向Slider默认为从上往下滑动。

默认值:false

SliderStyle枚举说明

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

展开
名称 说明
OutSet

滑块在滑轨上。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

InSet

滑块在滑轨内。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

NONE12+

无滑块

卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。

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

属性

支持除触摸热区以外的通用属性

blockColor

blockColor(value: ResourceColor)

设置滑块的颜色。

当滑块形状设置为SliderBlockType.DEFAULT时,blockColor可设置默认圆形滑块颜色。

当滑块形状设置为SliderBlockType.IMAGE时,滑块无填充,设置blockColor不生效。

当滑块形状设置为SliderBlockType.SHAPE时,blockColor可设置自定义形状的填充颜色。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
value ResourceColor

滑块的颜色。

默认值:$r('sys.color.ohos_id_color_foreground_contrary')

trackColor

trackColor(value: ResourceColor | LinearGradient)

设置滑轨的背景颜色。

从API version 12开始支持利用LinearGradient设置滑轨的渐变色。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
value ResourceColor | LinearGradient12+

滑轨的背景颜色。

说明: 设置渐变色时,若颜色断点颜色值为非法值或者渐变色断点为空时,渐变色不起效果。

默认值:$r('sys.color.ohos_id_color_component_normal')

该接口中的LinearGradient类型不支持在元服务中使用。

selectedColor

selectedColor(value: ResourceColor)

设置滑轨的已滑动部分颜色。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
value ResourceColor

滑轨的已滑动部分颜色。

默认值:$r('sys.color.ohos_id_color_emphasize')

showSteps

showSteps(value: boolean)

设置当前是否显示步长刻度值。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
value boolean

当前是否显示步长刻度值。

默认值:false

showTips

showTips(value: boolean, content?: ResourceStr)

设置滑动时是否显示气泡提示。

当direction的值为Axis.Horizontal时,tip显示在滑块上方,如果上方空间不够,则在下方显示。值为Axis.Vertical时,tip显示在滑块左边,如果左边空间不够,则在右边显示。不设置周边边距或者周边边距比较小时,tip会被截断。

tip的绘制区域为Slider自身节点的overlay。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
value boolean

滑动时是否显示气泡提示。

默认值:false

content10+ ResourceStr 气泡提示的文本内容,默认显示当前百分比。

trackThickness8+

trackThickness(value: Length)

设置滑轨的粗细。设置为小于等于0的值时,取默认值。

为保证滑块和滑轨的SliderStyle样式,blockSize跟随trackThickness同比例增减。

当style为SliderStyle.OutSet时,trackThickness :blockSize = 1 :4,当style为SliderStyle.InSet时,trackThickness :blockSize = 5 :3。

在变更trackThickness过程中,若trackThickness的大小或者blockSize的大小超过slider组件的width或者height(SliderStyle.OutSet时可能trackThickness没超过,但是blockSize超过了),取默认值。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
value Length

滑轨的粗细。

默认值:当参数style的值设置SliderStyle.OutSet 时为 4.0vp,SliderStyle.InSet时为20.0vp。

blockBorderColor10+

blockBorderColor(value: ResourceColor)

设置滑块描边颜色。

当滑块形状设置为SliderBlockType.DEFAULT时,blockBorderColor可设置默认圆形滑块描边颜色。

当滑块形状设置为SliderBlockType.IMAGE时,滑块无描边,设置blockBorderColor不生效。

当滑块形状设置为SliderBlockType.SHAPE时,blockBorderColor可设置自定义形状中线的颜色。

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

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

参数:

展开
参数名 类型 必填 说明
value ResourceColor

滑块描边颜色。

默认值:'#00000000'

blockBorderWidth10+

blockBorderWidth(value: Length)

设置滑块描边粗细。

当滑块形状设置为SliderBlockType.DEFAULT时,blockBorderWidth可设置默认圆形滑块描边粗细。

当滑块形状设置为SliderBlockType.IMAGE时,滑块无描边,设置blockBorderWidth不生效。

当滑块形状设置为SliderBlockType.SHAPE时,blockBorderWidth可设置自定义形状中线的粗细。

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

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

参数:

展开
参数名 类型 必填 说明
value Length 滑块描边粗细。

stepColor10+

stepColor(value: ResourceColor)

设置刻度颜色。

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

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

参数:

展开
参数名 类型 必填 说明
value ResourceColor

刻度颜色。

默认值:

$r('sys.color.ohos_id_color_foreground')混合

$r('sys.color.ohos_id_alpha_normal_bg')透明度的颜色

trackBorderRadius10+

trackBorderRadius(value: Length)

设置底板圆角半径。

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

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

参数:

展开
参数名 类型 必填 说明
value Length

底板圆角半径。

默认值:

style值为SliderStyle.OutSet默认值为'2vp'

style值为SliderStyle.InSet默认值为'10vp'。

selectedBorderRadius12+

selectedBorderRadius(value: Dimension)

设置已滑动部分(高亮)圆角半径。

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

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

参数:

展开
参数名 类型 必填 说明
value Dimension

已选择部分圆角半径。

默认值:style值为SliderStyle.InSet或SliderStyle.OutSet时,跟随底板圆角;style值为SliderStyle.NONE时,为0。

blockSize10+

blockSize(value: SizeOptions)

设置滑块大小。

当滑块形状设置为SliderBlockType.DEFAULT时,取宽高的最小值作为圆形半径。

当滑块形状设置为SliderBlockType.IMAGE时,用于设置图片的尺寸大小,图片采用ObjectFit.Cover策略进行缩放。

当滑块形状设置为SliderBlockType.SHAPE时,用于设置自定义形状的大小,自定义形状也会采用ObjectFit.Cover策略进行缩放。

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

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

参数:

展开
参数名 类型 必填 说明
value SizeOptions

滑块大小。

默认值:当参数style的值设置为SliderStyle.OutSet时为{width: 16, height: 16},当参数style的值设置为SliderStyle.InSet时为{width: 12, height: 12},当参数style的值设置为SliderStyle.NONE时为,此字段不生效。

当设置的blockSize的宽高值不相等时,取较小值的尺寸,当设置的宽高值中有一个或两个都小于等于0的时候,取默认值。

blockStyle10+

blockStyle(value: SliderBlockStyle)

设置滑块形状参数。

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

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

参数:

展开
参数名 类型 必填 说明
value SliderBlockStyle

滑块形状参数。

默认值:SliderBlockType.DEFAULT,使用圆形滑块。

stepSize10+

stepSize(value: Length)

设置刻度大小(直径)。当值为0时,刻度点不显示,当值小于0时,取默认值。

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

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

参数:

展开
参数名 类型 必填 说明
value Length

刻度大小(直径)。

默认值:'4vp'

取值范围:[0, trackThickness)

minLabel(deprecated)

minLabel(value: string)

设置最小值。

从API Version 9开始废弃,使用min替代。

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

参数:

展开
参数名 类型 必填 说明
value string 最小值。

maxLabel(deprecated)

maxLabel(value: string)

设置最大值。

从API Version 9开始废弃,使用max替代。

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

参数:

展开
参数名 类型 必填 说明
value string 最大值。
说明
  • Slider无默认padding。
  • 当Slider为水平滑动条时,Slider默认高度为40vp,宽度为父容器的宽度,滑动条居中显示,左右间距为分别为10vp,若设置padding,padding不会覆盖左右间距。
  • 当Slider为竖直滑动条时,Slider默认宽度为40vp,高度为父容器的高度,滑动条居中显示,上下间距为分别为6vp,若设置padding,padding不会覆盖上下间距。

sliderInteractionMode12+

sliderInteractionMode(value: SliderInteraction)

设置用户与滑动条组件交互方式。

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

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

参数:

展开
参数名 类型 必填 说明
value SliderInteraction

用户与滑动条组件交互方式。

默认值:SliderInteraction.SLIDE_AND_CLICK。

minResponsiveDistance12+

minResponsiveDistance(value: number)

设置滑动响应的最小距离。

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

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

参数:

展开
参数名 类型 必填 说明
value number

设置滑动响应的最小距离,滑动超过此距离后才响应使滑块滑动。

说明:

单位与参数min和max一致。

当value小于0、大于MAX-MIN或非法值时,取默认值。

默认值:0。

contentModifier12+

contentModifier(modifier: ContentModifier<SliderConfiguration>)

定制Slider内容区的方法。

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

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

参数:

展开
参数名 类型 必填 说明
modifier ContentModifier<SliderConfiguration>

在Slider组件上,定制内容区的方法。

modifier: 内容修改器,开发者需要自定义class实现ContentModifier接口。

说明
  • 如果设置了contentModifier,则在自定义区域内点击和手势滑动均不可触发原slider组件的onChange事件。
  • 仅当调用triggerChange函数且传递正确的参数值时才可以触发原slider组件的onChange事件。

slideRange12+

slideRange(value: SlideRange)

设置有效滑动区间。

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

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

参数:

展开
参数名 类型 必填 说明
value SlideRange 设置有效滑动区间

SliderBlockStyle10+对象说明

Slider组件滑块形状参数。

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

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

展开
名称 类型 必填 说明
type SliderBlockType

设置滑块形状。

默认值:SliderBlockType.DEFAULT,使用圆形滑块。

image ResourceStr

设置滑块图片资源。

图片显示区域大小由blockSize属性控制,请勿输入尺寸过大的图片。

shape Circle | Ellipse | Path | Rect 设置滑块使用的自定义形状。

SliderBlockType10+枚举说明

Slider组件滑块形状枚举。

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

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

展开
名称 说明
DEFAULT 0 使用默认滑块(圆形)。
IMAGE 1 使用图片资源作为滑块。
SHAPE 2 使用自定义形状作为滑块。

SliderInteraction12+枚举说明

用户与滑动条组件交互方式

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

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

展开
名称 说明
SLIDE_AND_CLICK 0 用户可拖拽滑块或者点击滑轨使滑块移动,鼠标或手指按下即发生移动。
SLIDE_ONLY 1 不允许用户通过点击滑轨使滑块移动。
SLIDE_AND_CLICK_UP 2 用户可拖拽滑块或者点击滑轨使滑块移动,鼠标或手指抬起时,若与屏幕按压位置一致,则触发移动。

SlideRange12+对象说明

定义SlideRange中使用的回调类型。

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

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

展开
名称 类型 必填 说明
from number 设置有效滑动区间的开始。
to number 设置有效滑动区间的结束。
说明
  • 当前仅当MIN<=from<=to<=MAX时该接口生效(MIN和MAX不依赖于其设置的值, 而取决于其实际生效的值)。
  • 可只设置from或者to, 也可以同时设置from和to。
  • 当接口生效, 设置的from处于紧邻的step整数倍的值之间, 则from实际取左区间step整数倍的那个值或者MIN作为修正后的值。
  • 当接口生效, 设置的to处于紧邻的step整数倍的值之间, 则to实际取右区间step整数倍的那个值或者MAX作为修正后的值。
  • 在from和to取修正值后, 当value是undefined或null时, 其取值与from一致; 当value是数值型, 且value <= from, 则取from; value > to, 则取to。

事件

支持通用事件外,还支持以下事件:

onChange

onChange(callback: (value: number, mode: SliderChangeMode) => void)

Slider拖动或点击时触发事件回调。

Begin和End状态当手势点击时都会触发,Moving和Click状态当value值发生变化时触发。

当连贯动作为拖动动作时,不触发Click状态。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

参数:

展开
参数名 类型 必填 说明
value number 当前滑动进度值,变化范围为对应步长steps数组。若返回值有小数,可使用number.toFixed()方法将数据处理为预期的精度。
mode SliderChangeMode 事件触发的相关状态值。

SliderChangeMode枚举说明

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

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

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

展开
名称 说明
Begin 0 手势/鼠标接触或者按下滑块。
Moving 1 正在拖动滑块过程中。
End 2

手势/鼠标离开滑块。

说明:

异常值恢复成默认值时触发,即value设置小于min或大于max。

Click8+ 3 点击滑动条使滑块位置移动。

SliderConfiguration12+对象说明

开发者需要自定义class实现ContentModifier接口。

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

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

展开
名称 类型 只读 可选 说明
value number 当前进度值。
min number 最小值。
max number 最大值。
step number Slider滑动步长。
triggerChange SliderTriggerChangeCallback 触发Slider变化。

SliderTriggerChangeCallback12+

type SliderTriggerChangeCallback = (value: number, mode: SliderChangeMode) => void

定义SliderConfiguration中使用的回调类型。

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

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

参数:

展开
参数名 类型 只读 可选 说明
value number 设置当前的进度值。
mode SliderChangeMode 设置事件触发的相关状态值。

示例

示例1(滑动条基础样式)

该示例通过配置style、showTips、showSteps控制气泡、刻度值、滑块和滑轨的显示。

收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct SliderExample {
  5. @State outSetValueOne: number = 40
  6. @State inSetValueOne: number = 40
  7. @State noneValueOne: number = 40
  8. @State outSetValueTwo: number = 40
  9. @State inSetValueTwo: number = 40
  10. @State vOutSetValueOne: number = 40
  11. @State vInSetValueOne: number = 40
  12. @State vOutSetValueTwo: number = 40
  13. @State vInSetValueTwo: number = 40
  14. build() {
  15. Column({ space: 8 }) {
  16. Text('outset slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
  17. Row() {
  18. Slider({
  19. value: this.outSetValueOne,
  20. min: 0,
  21. max: 100,
  22. style: SliderStyle.OutSet
  23. })
  24. .showTips(true)
  25. .onChange((value: number, mode: SliderChangeMode) => {
  26. this.outSetValueOne = value
  27. console.info('value:' + value + 'mode:' + mode.toString())
  28. })
  29. // toFixed(0)将滑动条返回值处理为整数精度
  30. Text(this.outSetValueOne.toFixed(0)).fontSize(12)
  31. }
  32. .width('80%')
  33. Row() {
  34. Slider({
  35. value: this.outSetValueTwo,
  36. step: 10,
  37. style: SliderStyle.OutSet
  38. })
  39. .showSteps(true)
  40. .onChange((value: number, mode: SliderChangeMode) => {
  41. this.outSetValueTwo = value
  42. console.info('value:' + value + 'mode:' + mode.toString())
  43. })
  44. Text(this.outSetValueTwo.toFixed(0)).fontSize(12)
  45. }
  46. .width('80%')
  47. Text('inset slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
  48. Row() {
  49. Slider({
  50. value: this.inSetValueOne,
  51. min: 0,
  52. max: 100,
  53. style: SliderStyle.InSet
  54. })
  55. .blockColor('#191970')
  56. .trackColor('#ADD8E6')
  57. .selectedColor('#4169E1')
  58. .showTips(true)
  59. .onChange((value: number, mode: SliderChangeMode) => {
  60. this.inSetValueOne = value
  61. console.info('value:' + value + 'mode:' + mode.toString())
  62. })
  63. Text(this.inSetValueOne.toFixed(0)).fontSize(12)
  64. }
  65. .width('80%')
  66. Row() {
  67. Slider({
  68. value: this.inSetValueTwo,
  69. step: 10,
  70. style: SliderStyle.InSet
  71. })
  72. .blockColor('#191970')
  73. .trackColor('#ADD8E6')
  74. .selectedColor('#4169E1')
  75. .showSteps(true)
  76. .onChange((value: number, mode: SliderChangeMode) => {
  77. this.inSetValueTwo = value
  78. console.info('value:' + value + 'mode:' + mode.toString())
  79. })
  80. Text(this.inSetValueTwo.toFixed(0)).fontSize(12)
  81. }
  82. .width('80%')
  83. Text('none slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
  84. Row() {
  85. Slider({
  86. value: this.noneValueOne,
  87. min: 0,
  88. max: 100,
  89. style: SliderStyle.NONE
  90. })
  91. .blockColor('#191970')
  92. .trackColor('#ADD8E6')
  93. .selectedColor('#4169E1')
  94. .showTips(true)
  95. .onChange((value: number, mode: SliderChangeMode) => {
  96. this.noneValueOne = value
  97. console.info('value:' + value + 'mode:' + mode.toString())
  98. })
  99. Text(this.noneValueOne.toFixed(0)).fontSize(12)
  100. }
  101. .width('80%')
  102. Row() {
  103. Column() {
  104. Text('vertical outset slider').fontSize(9).fontColor(0xCCCCCC).width('50%').margin(15)
  105. Row() {
  106. Text().width('10%')
  107. Slider({
  108. value: this.vOutSetValueOne,
  109. style: SliderStyle.OutSet,
  110. direction: Axis.Vertical
  111. })
  112. .blockColor('#191970')
  113. .trackColor('#ADD8E6')
  114. .selectedColor('#4169E1')
  115. .showTips(true)
  116. .onChange((value: number, mode: SliderChangeMode) => {
  117. this.vOutSetValueOne = value
  118. console.info('value:' + value + 'mode:' + mode.toString())
  119. })
  120. Slider({
  121. value: this.vOutSetValueTwo,
  122. step: 10,
  123. style: SliderStyle.OutSet,
  124. direction: Axis.Vertical
  125. })
  126. .blockColor('#191970')
  127. .trackColor('#ADD8E6')
  128. .selectedColor('#4169E1')
  129. .showSteps(true)
  130. .onChange((value: number, mode: SliderChangeMode) => {
  131. this.vOutSetValueTwo = value
  132. console.info('value:' + value + 'mode:' + mode.toString())
  133. })
  134. }
  135. }.width('50%').height(300)
  136. Column() {
  137. Text('vertical inset slider').fontSize(9).fontColor(0xCCCCCC).width('50%').margin(15)
  138. Row() {
  139. Slider({
  140. value: this.vInSetValueOne,
  141. style: SliderStyle.InSet,
  142. direction: Axis.Vertical,
  143. reverse: true // 竖向的Slider默认是上端是min值,下端是max值,因此想要从下往上滑动,需要设置reverse为true
  144. })
  145. .showTips(true)
  146. .onChange((value: number, mode: SliderChangeMode) => {
  147. this.vInSetValueOne = value
  148. console.info('value:' + value + 'mode:' + mode.toString())
  149. })
  150. Slider({
  151. value: this.vInSetValueTwo,
  152. step: 10,
  153. style: SliderStyle.InSet,
  154. direction: Axis.Vertical,
  155. reverse: true
  156. })
  157. .showSteps(true)
  158. .onChange((value: number, mode: SliderChangeMode) => {
  159. this.vInSetValueTwo = value
  160. console.info('value:' + value + 'mode:' + mode.toString())
  161. })
  162. }
  163. }.width('50%').height(300)
  164. }
  165. }.width('100%')
  166. }
  167. }

示例2(设置滑动条样式)

该示例通过blockBorderColor、blockSize、blockBorderWidth、blockStyle设置滑块的样式,通过stepSize、stepColor设置刻度值的样式,通过trackBorderRadius设置底板的圆角,通过selectedBorderRadius设置已滑动部分的圆角。

收起
自动换行
深色代码主题
复制
  1. @Entry
  2. @Component
  3. struct SliderExample {
  4. @State tipsValue: number = 40
  5. build() {
  6. Column({ space: 8 }) {
  7. Text('block').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
  8. Slider({ style: SliderStyle.OutSet, value: 40 })
  9. .blockSize({ width: 40, height: 40 })
  10. .blockBorderColor(Color.Red)
  11. .blockBorderWidth(5)
  12. Divider()
  13. Text('step').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
  14. Slider({ style: SliderStyle.InSet, value: 40, step: 10 })
  15. .showSteps(true)
  16. .stepSize(8)
  17. .stepColor(Color.Yellow)
  18. Divider()
  19. Text('track').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
  20. Slider({ style: SliderStyle.InSet, value: 40 })
  21. .trackBorderRadius(2)
  22. Divider()
  23. Text('selected').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
  24. Slider({ style: SliderStyle.InSet, value: 40 })
  25. .selectedBorderRadius(2)
  26. Divider()
  27. Text('blockStyle').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
  28. Slider({ style: SliderStyle.OutSet, value: 40 })
  29. .blockStyle({ type: SliderBlockType.DEFAULT })
  30. Slider({ style: SliderStyle.OutSet, value: 40 })
  31. .blockStyle({ type: SliderBlockType.IMAGE, image: $r('sys.media.ohos_app_icon') })
  32. Slider({ style: SliderStyle.OutSet, value: 40 })
  33. .blockSize({ width: '60px', height: '60px' })
  34. .blockColor(Color.Red)
  35. .blockStyle({ type: SliderBlockType.SHAPE, shape: new Path({ commands: 'M60 60 M30 30 L15 56 L45 56 Z' }) })
  36. Divider()
  37. Text('tips').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
  38. Slider({ style: SliderStyle.InSet, value: this.tipsValue })
  39. .showTips(true, this.tipsValue.toFixed())
  40. .onChange(value => {
  41. this.tipsValue = value
  42. })
  43. }
  44. }
  45. }

示例3(自定义滑动条)

该示例实现了Slider组件通过样式Builder定制内容区。点击增加按钮,进度条会按照原Slider设置的步长增加,反之点减少按钮进度条会减少,并触发原组件的onChange事件。

收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. @Builder function buildSlider(config: SliderConfiguration) {
  3. Row() {
  4. Column({space: 30}) {
  5. Progress({value: config.value, total: config.max, type:ProgressType.Ring})
  6. .margin({ top:20 })
  7. Button('增加').onClick(() => {
  8. config.value = config.value + config.step
  9. config.triggerChange(config.value, SliderChangeMode.Click)
  10. })
  11. .width(100)
  12. .height(25)
  13. .fontSize(10)
  14. .enabled(config.value<config.max)
  15. Button('减少').onClick(() => {
  16. config.value=config.value-config.step
  17. config.triggerChange(config.value, SliderChangeMode.Click)
  18. })
  19. .width(100)
  20. .height(25)
  21. .fontSize(10)
  22. .enabled(config.value>config.min)
  23. Slider({
  24. value: config.value,
  25. min: config.min,
  26. max: config.max,
  27. step:config.step,
  28. })
  29. .width(config.max)
  30. .visibility((config.contentModifier as MySliderStyle).showSlider?Visibility.Visible:Visibility.Hidden)
  31. .showSteps(true)
  32. .onChange((value: number, mode: SliderChangeMode) => {
  33. config.triggerChange(value, mode)
  34. })
  35. Text('当前状态:'+ ((config.contentModifier as MySliderStyle).sliderChangeMode==0?"Begin"
  36. :((config.contentModifier as MySliderStyle).sliderChangeMode==1?"Moving"
  37. :((config.contentModifier as MySliderStyle).sliderChangeMode==2?"End"
  38. :((config.contentModifier as MySliderStyle).sliderChangeMode==3?"Click":"无")))))
  39. .fontSize(10)
  40. Text('进度值:'+ config.value)
  41. .fontSize(10)
  42. Text('最小值:'+ config.min)
  43. .fontSize(10)
  44. Text('最大值:'+ config.max)
  45. .fontSize(10)
  46. Text('步长:'+ config.step)
  47. .fontSize(10)
  48. }
  49. .width('80%')
  50. }
  51. .width('100%')
  52. }
  53. class MySliderStyle implements ContentModifier<SliderConfiguration> {
  54. showSlider:boolean=true
  55. sliderChangeMode:number=0
  56. constructor(showSlider: boolean,sliderChangeMode:number) {
  57. this.showSlider = showSlider
  58. this.sliderChangeMode = sliderChangeMode
  59. }
  60. applyContent() : WrappedBuilder<[SliderConfiguration]> {
  61. return wrapBuilder(buildSlider)
  62. }
  63. }
  64. @Entry
  65. @Component
  66. struct SliderExample {
  67. @State showSlider:boolean=true
  68. @State sliderValue: number = 0
  69. @State sliderMin: number = 10
  70. @State sliderMax: number = 100
  71. @State sliderStep: number = 20
  72. @State sliderChangeMode: number = 0
  73. build() {
  74. Column({ space: 8 }) {
  75. Row() {
  76. Slider({
  77. value: this.sliderValue,
  78. min: this.sliderMin,
  79. max: this.sliderMax,
  80. step:this.sliderStep,
  81. })
  82. .showSteps(true)
  83. .onChange((value: number, mode: SliderChangeMode) => {
  84. this.sliderValue = value
  85. this.sliderChangeMode=mode
  86. console.info('【SliderLog】value:' + value + 'mode:' + mode.toString())
  87. })
  88. .contentModifier(new MySliderStyle(this.showSlider,this.sliderChangeMode))
  89. }
  90. .width('100%')
  91. }.width('100%')
  92. }
  93. }

在 API参考 中进行搜索
请输入您想要搜索的关键词