滑动条组件

2024-01-22 17:26 更新

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

说明

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

子组件

接口

Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direction?: Axis, reverse?: boolean})

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

参数:

参数名

参数类型

必填

参数描述

value

number

当前进度值。

默认值:参数min

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]

说明:

设置小于0或百分比的值时,按默认值显示。

style

SliderStyle

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

默认值:SliderStyle.OutSet

direction8+

Axis

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

默认值:Axis.Horizontal

reverse8+

boolean

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

默认值:false

SliderStyle枚举说明

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

名称

描述

OutSet

滑块在滑轨上。

InSet

滑块在滑轨内。

属性

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

名称

参数类型

描述

blockColor

ResourceColor

设置滑块的颜色。

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

trackColor

ResourceColor

设置滑轨的背景颜色。

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

selectedColor

ResourceColor

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

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

showSteps

boolean

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

默认值:false

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

showTips

boolean

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

默认值:false

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

说明:

当direction的属性值为Axis.Horizontal时,tip显示在滑块正上方。值为Axis.Vertical时,tip显示在滑块正左边。

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

Slider不设置边距,或者边距比较小时,tip会被截断。

trackThickness

Length

设置滑轨的粗细。

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

从APIversion9开始,该接口支持在ArkTS卡片中使用。

说明:

设置为小于0的值时,按默认值显示。

事件

通用事件仅支持挂载卸载事件:OnAppear,OnDisAppear。

名称

功能描述

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

Slider滑动时触发事件回调。

value:当前滑动进度值。若返回值有小数,可使用number.toFixed()方法将数据处理为预期的精度。

mode:拖动状态。

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

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

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

value值的变化范围为对应步长steps数组。

SliderChangeMode枚举说明

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

名称

描述

Begin

0

手势/鼠标接触或者按下滑块。

Moving

1

正在拖动滑块过程中。

End

2

手势/鼠标离开滑块。

Click

3

点击滑动条使滑块位置移动。

示例

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

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号