滑動條組件

2024-01-22 17:26 更新

滑動條組件,通常用于快速調(diào)節(jié)設(shè)置值,如音量調(diào)節(jié)、亮度調(diào)節(jié)等應(yīng)用場景。

說明

該組件從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。

子組件

接口

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

從API version 9開始,該接口支持在ArkTS卡片中使用。

參數(shù):

參數(shù)名

參數(shù)類型

必填

參數(shù)描述

value

number

當前進度值。

默認值:參數(shù)min

min

number

設(shè)置最小值。

默認值:0

max

number

設(shè)置最大值。

默認值:100

說明:

min >= max異常情況,min取默認值0,max取默認值100。

value不在[min, max]范圍之內(nèi),取min/max,靠近min取min,靠近max取max。

step

number

設(shè)置Slider滑動步長。

默認值:1

取值范圍:[0.01, max]

說明:

設(shè)置小于0或百分比的值時,按默認值顯示。

style

SliderStyle

設(shè)置Slider的滑塊與滑軌顯示樣式。

默認值:SliderStyle.OutSet

direction8+

Axis

設(shè)置滑動條滑動方向為水平或豎直方向。

默認值:Axis.Horizontal

reverse8+

boolean

設(shè)置滑動條取值范圍是否反向,橫向Slider默認為從左往右滑動,豎向Slider默認為從上往下滑動。

默認值:false

SliderStyle枚舉說明

從API version 9開始,該接口支持在ArkTS卡片中使用。

名稱

描述

OutSet

滑塊在滑軌上。

InSet

滑塊在滑軌內(nèi)。

屬性

支持除觸摸熱區(qū)以外的通用屬性設(shè)置。

名稱

參數(shù)類型

描述

blockColor

ResourceColor

設(shè)置滑塊的顏色。

從API version 9開始,該接口支持在ArkTS卡片中使用。

trackColor

ResourceColor

設(shè)置滑軌的背景顏色。

從API version 9開始,該接口支持在ArkTS卡片中使用。

selectedColor

ResourceColor

設(shè)置滑軌的已滑動部分顏色。

從API version 9開始,該接口支持在ArkTS卡片中使用。

showSteps

boolean

設(shè)置當前是否顯示步長刻度值。

默認值:false

從API version 9開始,該接口支持在ArkTS卡片中使用。

showTips

boolean

設(shè)置滑動時是否顯示百分比氣泡提示。

默認值:false

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

當direction的屬性值為Axis.Horizontal時,tip顯示在滑塊正上方。值為Axis.Vertical時,tip顯示在滑塊正左邊。

tip的繪制區(qū)域為Slider自身節(jié)點的overlay。

Slider不設(shè)置邊距,或者邊距比較小時,tip會被截斷。

trackThickness

Length

設(shè)置滑軌的粗細。

默認值:當參數(shù)style的值設(shè)置SliderStyle.OutSet 時為 4.0vp,SliderStyle.InSet時為20.0vp。

從APIversion9開始,該接口支持在ArkTS卡片中使用。

說明:

設(shè)置為小于0的值時,按默認值顯示。

事件

通用事件僅支持掛載卸載事件:OnAppear,OnDisAppear。

名稱

功能描述

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

Slider滑動時觸發(fā)事件回調(diào)。

value:當前滑動進度值。若返回值有小數(shù),可使用number.toFixed()方法將數(shù)據(jù)處理為預(yù)期的精度。

mode:拖動狀態(tài)。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:Begin和End狀態(tài)當手勢點擊時都會觸發(fā),Moving和Click狀態(tài)當value值發(fā)生變換時觸發(fā)。

當連貫動作為拖動動作時,不觸發(fā)Click狀態(tài)。

value值的變化范圍為對應(yīng)步長steps數(shù)組。

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)將滑動條返回值處理為整數(shù)精度
  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值,因此想要從下往上滑動,需要設(shè)置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. }

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號