【HarmonyOS4.0】第六篇-ArkUI系统组件(二)

六、选择器组件

ArkUI开发框架提供了一系列比较常用的选择器,比如文本选择器 TextPicker 、时间选择器 TimePicker 以及日期选择器 DatePicker

6.1.TimePicker

TimePicker 是选择时间的滑动选择器组件,默认以 00:00 至 23:59 的时间区创建滑动选择器。

6.1.1:TimePicker定义

接口:默认以24小时的时间区间创建滑动选择器

js 复制代码
TimePicker(options?: {selected?: Date})

options:创建时间选择器的可选配置参数, TimePickerOptions 说明如下:

  • selected:设置选择器的默认选中时间。

参数:

参数名 参数类型 必填 参数描述
selected Date 设置选中项的时间。默认值:当前系统时间

案例如下所示:

js 复制代码
@Entry
@Component
struct TimePickerPage{
  build() {
    Column(){
      TimePicker({selected: new Date()}) //设置默认当前事件
        .width(200)
        .height(150)
        .backgroundColor("#40E0D0")
    }
    .width("100%")
    .padding(20)
  }
}

预览结果如下:

6.1.2.TimePicker属性介绍

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

名称 参数类型 描述
useMilitaryTime boolean 展示时间是否为24小时制,不支持动态修改。默认值:false

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

名称 功能描述
onChange(callback: (value: TimePickerResult ) => void) 选择时间时触发该事件。

案例如下:

js 复制代码
@Entry
@Component
struct TimePickerPage{
  @State isMilitaryTime:boolean = true //默认状态为true
  @State selectedTime:Date = new Date('1998-07-27T08:00:00')

  build() {
    Column(){  // 创建一个垂直布局的列
      Button('切换:12小时制/24小时制')  // 创建一个按钮,显示文本为"切换:12小时制/24小时制"
        .margin({top:30,bottom:30})  // 设置按钮的上下外边距为30
        .onClick(()=>{  // 监听按钮的点击事件
          //点击一次就取反,以此来控制切换
          this.isMilitaryTime = !this.isMilitaryTime;  // 点击按钮时切换 isMilitaryTime 状态变量的值
        })

      TimePicker({selected:this.selectedTime})  // 创建一个时间选择器,设置默认选中时间为 this.selectedTime
        .useMilitaryTime(this.isMilitaryTime)  // 根据 isMilitaryTime 状态变量切换时间制(12小时制或24小时制)
        .onChange((value:TimePickerResult)=>{  // 监听时间选择器数值变化事件
          //设置小时,单位:分钟
          this.selectedTime.setHours(value.hour, value.minute);  // 根据选择的时间设置 this.selectedTime 的小时和分钟
          console.info('select current date is:'+JSON.stringify(value));  // 在控制台输出选择的时间信息
        })
    }
    .width("100%")
    .padding(20)
  }
}

预览效果如下:

6.2.DatePicker

DatePicker 是选择日期的滑动选择器组件,默认以 1970-1-1 至 2100-12-31 的日期区间创建滑动选择器。

6.2.1.DatePicker定义

接口:

js 复制代码
DatePicker(options?: {start?: Date, end?: Date, selected?: Date})

上面的接口可以根据指定范围的Date创建可以选择日期的滑动选择器,参数:

参数名 参数类型 必填 参数描述
start Date 指定选择器的起始日期。默认值:Date('1970-1-1')
end Date 指定选择器的结束日期。默认值:Date('2100-12-31')
selected Date 设置选中项的日期。默认值:当前系统日期

案例如下:

js 复制代码
@Entry
@Component
struct DatePickPage{
  @State isMilitaryTime:boolean = true //默认状态为true
  @State selectedTime:Date = new Date('1998-07-27T08:00:00')

  build() {
    Column(){  // 创建一个垂直布局的列
      DatePicker({
        start:new Date("2012-1-1"), // 设置开始时间
        end:new Date("2032-1-1")    // 设置结束时间
      })
        .width(255)
        .height(120)
        .backgroundColor("#AFEEEE")
    }
    .width("100%")
    .padding(20)
  }
}

执行后效果如下:

6.2.2:DatePicker属性介绍

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

名称 参数类型 描述
lunar boolean 日期是否显示农历。- true:展示农历。- false:不展示农历。默认值:false

案例如下所示:

js 复制代码
@Entry
@Component
struct DatePickPage{
  build() {
    Column(){  // 创建一个垂直布局的列
      DatePicker({
        start:new Date("2012-1-1"), // 设置开始时间
        end:new Date("2032-1-1")    // 设置结束时间
      })
        .lunar(true)    //设置显示农历
        .width(255)
        .height(120)
        .backgroundColor("#AFEEEE")
    }
    .width("100%")
    .padding(20)
  }
}

预览效果如下:

6.2.3:DatePicker事件介绍

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

名称 功能描述
onChange(callback: (value: DatePickerResult) => void) 选择日期时触发该事件。

DatePickerResult对象说明:

名称 参数类型 描述
year number 选中日期的年。
month number 选中日期的月(0~11),0表示1月,11表示12月。
day number 选中日期的日

案例如下:点击按钮可以切换农历和公历

js 复制代码
@Entry
@Component
struct DatePickPage02{
  @State isLunar:boolean = false //默认状态为true
  @State selectedDate:Date = new Date('1998-07-27T08:00:00')

  build() {
    Column(){  // 创建一个垂直布局的列
      Button("切换公历/农历")  // 创建一个按钮,显示文本为"切换公历/农历"
        .margin({top:30,bottom:30})  // 设置按钮的上下外边距为30
        .onClick(()=>{  // 监听按钮的点击事件
          this.isLunar = !this.isLunar;  // 点击按钮时切换 isLunar 状态变量的值
        })

      DatePicker({  // 创建一个日期选择器
        start: new Date('1970-1-1'),  // 设置起始日期为1970年1月1日
        end: new Date('2099-1-1'),  // 设置结束日期为2099年1月1日
        selected: this.selectedDate  // 设置默认选中日期为 this.selectedDate
      })
        .lunar(this.isLunar)  // 根据 isLunar 状态变量切换日期显示为公历或农历
        .onChange((value:DatePickerResult)=>{  // 监听日期选择器数值变化事件
          this.selectedDate.setFullYear(value.year, value.month, value.day);  // 根据选择的日期设置 this.selectedDate 的年、月、日,切换过去就是之前选择的时间
          console.info('select current date is: '+JSON.stringify(value));  // 在控制台输出选择的日期信息
        })
    }
    .width("100%")
    .padding(20)
  }
}

预览效果如下:

七、二维码组件

二维码的使用场景,比如扫码添加好友,扫码骑车,扫码支付等等,ArkUI开发框架提供了 RQCode 组件生成一个二维码。

接口:

php 复制代码
QRCode(value: string)

参数:

参数名 参数类型 必填 参数描述
value string 二维码内容字符串。最大支持256个字符,若超出,则截取前256个字符。说明:该字符串内容确保有效,不支持null、undefined以及空内容。

属性

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

名称 参数类型 描述
color ResourceColor 设置二维码颜色。默认值:Color.Black从API version 9开始,该接口支持在ArkTS卡片中使用。
backgroundColor ResourceColor 设置二维码背景颜色。默认值:Color.White从API version 9开始,该接口支持在ArkTS卡片中使用。

案例如下:

js 复制代码
@Entry
@Component
struct QRCodePage {
  @State value: string = "念去去,千里烟波暮霭程程楚天阔";

  build() {
    Column({space:5}){
      Text("不带颜色")
        .fontSize(25)
        .width("90%")
        .fontColor("#696969")
        .fontWeight(FontWeight.Bold)
        .textAlign(TextAlign.Center)
      QRCode(this.value).width(200).height(200)

      Text("设置二维码颜色")
        .fontSize(25)
        .width("90%")
        .fontColor("#696969")
        .fontWeight(FontWeight.Bold)
        .textAlign(TextAlign.Center)
      QRCode(this.value).width(200).height(200).color("#F08080")

      Text("设置二维码颜色和背景颜色")
        .fontSize(25)
        .width("90%")
        .fontColor("#696969")
        .fontWeight(FontWeight.Bold)
        .textAlign(TextAlign.Center)
      QRCode(this.value).width(200).height(200).color("#F08080").backgroundColor("#D3D3D3")

    }.width("100%").margin({top:10})
  }
}

设置后如下:

八、开关组件

ArkUI开发框架 Toggle组件提供勾选框样式、状态按钮样式及开关样式。

子组件:仅当ToggleType为Button时可包含子组件。

8.1.Toggle定义

接口

php 复制代码
Toggle(options: { type: ToggleType, isOn?: boolean })

参数:

参数名 参数类型 必填 参数描述
type ToggleType 开关的样式。
isOn boolean 开关是否打开,true:打开,false:关闭。默认值:false

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

名称 描述
Checkbox 提供单选框样式。说明:通用属性margin的默认值为:{top: 12 vp,right: 12 vp,bottom: 12 vp,left: 12 vp}
Button 提供状态按钮样式,如果子组件有文本设置,则相应的文本内容会显示在按钮内部。
Switch 提供开关样式。说明:通用属性margin的默认值为:{top: 14 vp,right: 6 vp,bottom: 6 vp,left: 14 vp}

按钮样式案例如下:

js 复制代码
@Entry
@Component
struct TogglePage {
  build() {
    Column({space:20}){
      Row(){
        Text("开关样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Switch}).width(30)
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      Row(){
        Text("单选框样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Checkbox}).width(30)
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      //按钮样式
      Row(){
        Toggle({type:ToggleType.Button}){
          Text("注册").fontSize(30)
        }.width("80%").height(50)
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)
    }
    .width("100%")
    .padding({top:20})
  }
}

执行后如下:

8.2.Toggle属性介绍

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

名称 参数 参数描述
selectedColor ResourceColor 设置组件打开状态的背景颜色。从API version 9开始,该接口支持在ArkTS卡片中使用。
switchPointColor ResourceColor 设置Switch类型的圆形滑块颜色。说明:仅对type为ToggleType.Switch生效。从API version 9开始,该接口支持在ArkTS卡片中使用。

修改之前的代码,设置按钮的颜色如下:

js 复制代码
@Entry
@Component
struct TogglePage {
  build() {
    Column({space:20}){
      Row(){
        Text("开关样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Switch})
          .selectedColor("#6495ED") //设置组件打开状态的背景颜色为蓝色
          .switchPointColor("#A9A9A9") //设置type是Switch的圆形滑块颜色为灰色
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      Row(){
        Text("单选框样式:").fontWeight(FontWeight.Bold).fontSize(25)
        Toggle({type:ToggleType.Checkbox})
          .width(30)
          .selectedColor("#6495ED") //设置组件打开状态的背景颜色为蓝色
          .switchPointColor("#A9A9A9") //设置type是Switch的圆形滑块颜色为灰色
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)

      //按钮样式
      Row(){
        Toggle({type:ToggleType.Button}){
          Text("注册").fontSize(30)
        }
        .width("80%")
        .height(50)
        .selectedColor("#6495ED") //设置组件打开状态的背景颜色为蓝色
        .switchPointColor("#A9A9A9") //设置type是Switch的圆形滑块颜色为灰色
      }
      .width("100%")
      .justifyContent(FlexAlign.Center)
    }
    .width("100%")
    .padding({top:20})
  }
}

执行后如下:

8.3.Toggle事件介绍

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

名称 功能描述
onChange(callback: (isOn: boolean) => void) 开关状态切换时触发该事件。从API version 9开始,该接口支持在ArkTS卡片中使用。说明:isOn为true时,代表状态从关切换为开。isOn为false时,代表状态从开切换为关。

案例如下:

js 复制代码
@Entry
@Component
struct TogglePage {
  build() {
    Column({space: 20}) {
      Row(){
        Toggle({type: ToggleType.Switch}).size({width: 40, height:40})

        Toggle({type:ToggleType.Switch})
          .selectedColor('#007DFF')
          .switchPointColor('#FFFFFF')
          .onChange((isOn:boolean)=>{
            //修改开关状态
            console.log(`开关状态为:${isOn}`)
          })
          .size({width: 40, height:40})
      }
      .width("100%")
      .padding({top:20})
      .justifyContent(FlexAlign.Center)

      Row(){
        Toggle({type: ToggleType.Checkbox}).size({width: 40, height:40})

        Toggle({type:ToggleType.Checkbox})
          .selectedColor('#007DFF')
          .switchPointColor('#FFFFFF')
          .onChange((isOn:boolean)=>{
            //修改开关状态
            console.log(`开关状态为:${isOn}`)
          })
          .size({width: 40, height:40})
      }
      .width("100%")
      .padding({top:20})
      .justifyContent(FlexAlign.Center)


      Row(){
        Toggle({type: ToggleType.Button}){
          Text("按钮样式").fontSize(20)
        }.size({width: 140, height: 40})

        Toggle({type: ToggleType.Button}){
          Text("按钮样式").fontSize(20)
        }
        .size({width: 140, height: 40})
        .selectedColor('#007DFF')
        .switchPointColor('#FFFFFF')
        .onChange((isOn:boolean)=>{
          //修改开关状态
          console.log(`开关状态为:${isOn}`)
        })

      }
      .width("100%")
      .padding(20)
      .justifyContent(FlexAlign.Center)
    }
    .width("100%")
    .padding({ top: 20 })
  }
}

预览后效果如下:

九、提示框组件

ArkUI开发框架提供了@ohos.promptAction (弹窗),可以创建并显示文本提示框、对话框和操作菜单。

9.1.@ohos.promptAction (弹窗)定义

①.导入模块:

javascript 复制代码
import promptAction from '@ohos.promptAction'

②.promptAction.showToast,接口说明:

php 复制代码
showToast(options: ShowToastOptions): void

③.参数:

参数名 类型 必填 说明
options ShowToastOptions 文本弹窗选项。

ShowToastOptions选项说明

名称 类型 必填 说明
message string| Resource9+ 显示的文本信息。默认字体为'Harmony Sans',不支持设置其他字体。
duration number 默认值1500ms,取值区间:1500ms-10000ms。若小于1500ms则取默认值,若大于10000ms则取上限值10000ms。
bottom string| number 设置弹窗边框距离屏幕底部的位置。

④.错误码:以下错误码的详细介绍请参见ohos.promptAction(弹窗)错误码。

错误码ID 错误信息
100001 if UI execution context not found.

简答案例如下:

js 复制代码
import promptAction from '@ohos.promptAction';
@Entry
@Component
struct PromptActionPage01 {
  build() {
    Column() {
      Button("点击出现弹窗")
        .size({width:150, height:50})
        .type(ButtonType.Normal)
        .borderRadius(12)
        .onClick(()=>{
          try {
            promptAction.showToast({
              message: '注册成功', //显示的文本信息。默认字体为'Harmony Sans',不支持设置其他字体。
              duration: 2000,    //弹出显示时间,默认值1500ms。
            });
          } catch (error) {
            console.error(`showToast args error code is ${error.code}, message is ${error.message}`);
          };
        })
    }
    .width("100%")
    .margin({top:40})
  }
}

预览显示如下:

9.2.promptAction.showDialog

①.创建并显示对话框,对话框响应结果异步返回。接口如下:

js 复制代码
showDialog(options: ShowDialogOptions, callback: AsyncCallback<ShowDialogSuccessResponse>):void

②.参数:

参数名 类型 必填 说明
options ShowDialogOptions 页面显示对话框信息描述。
callback AsyncCallback 对话框响应结果回调。

ShowDialogOptions对话框的选项说明

名称 类型 必填 说明
title string| Resource9+ 标题文本。
message string| Resource9+ 内容文本。
buttons [Button,Button?,Button?] 对话框中按钮的数组,结构为:{text:'button', color: '#666666'},支持1-3个按钮。其中第一个为positiveButton;第二个为negativeButton;第三个为neutralButton。

③.ShowDialogSuccessResponse对话框的响应结果。

名称 类型 必填 说明
index number 选中按钮在buttons数组中的索引。

案例如下:

js 复制代码
import promptAction from '@ohos.promptAction'; // 导入弹窗组件

@Entry // 入口标记
@Component // 组件标记
struct ShowDialogPage { // 定义名为 ShowDialogPage 的组件
  build() { // 构建方法
    Column() { // 列布局
      Button("点击出现弹窗") // 按钮文本
        .size({width:150, height:50}) // 按钮尺寸
        .type(ButtonType.Normal) // 按钮类型为普通
        .borderRadius(12) // 按钮边框圆角半径
        .onClick(()=>{ // 点击事件处理函数
          try { // 尝试执行以下代码
            promptAction.showDialog({ // 调用弹窗组件的showDialog方法
              title: "是否现在开始答题?", // 弹窗标题文本
              message: "答题时间100分钟,一旦开始不能关闭", // 弹窗内容文本
              buttons: [ // 弹窗中的按钮数组
                {text: "同意", color:"#000000"}, // 同意按钮,文本为"同意",颜色为黑色
                {text: "不同意", color:"#000000"} // 不同意按钮,文本为"不同意",颜色为黑色
              ],
            })
              .then(data=>{ // showDialog方法返回Promise对象,处理成功时执行的回调函数
                //输出点击的按钮索引,从0开始
                console.info(`showDialog success, click button: ${data.index}`) // 打印弹窗点击按钮的索引
              }).catch(err=>{ // 处理失败时执行的回调函数
                console.info(`showDialog error: ${err}`) // 打印错误信息
            })
          } catch (error) { // 捕获try代码块中的错误
            console.error(`showDialog args error code is ${error.code}, message is ${error.message}`); // 打印错误信息
          };
        })
    }
    .width("100%") // 设置列布局宽度为100%
    .margin({top:40}) // 设置列布局上边距为40
  }
}

预览后效果如下:

9.3.promptAction.showActionMenu

①.创建并显示操作菜单,菜单响应结果异步返回。接口:

php 复制代码
showActionMenu(options: ActionMenuOptions, callback: AsyncCallback<ActionMenuSuccessResponse>):void

②.参数:

参数名 类型 必填 说明
options ActionMenuOptions 操作菜单选项。
callback AsyncCallback 菜单响应结果回调。

options操作菜单的选项:

名称 类型 必填 说明
title string| Resource9+ 标题文本。
buttons [Button,Button?,Button?,Button?,Button?,Button?] 菜单中菜单项按钮的数组,结构为:{text:'button', color: '#666666'},支持1-6个按钮。大于6个按钮时弹窗不显示。

上面Button:菜单中的菜单项按钮的构成:

名称 类型 必填 说明
text string| Resource9+ 按钮文本内容。
color string| Resource9+ 按钮文本颜色。

③.返回值:

ActionMenuSuccessResponse类型,操作菜单的响应结果。

名称 类型 必填 说明
index number 选中按钮在buttons数组中的索引,从0开始。

案例如下:

js 复制代码
import promptAction from '@ohos.promptAction'
@Entry
@Component
struct ShowActionMenuPage {
  build() {
    Column() { // 列布局
      Button("点击出现弹窗") // 按钮文本
        .size({width:150, height:50}) // 按钮尺寸
        .type(ButtonType.Normal) // 按钮类型为普通
        .borderRadius(12) // 按钮边框圆角半径
        .onClick(()=>{ // 点击事件处理函数
          try { // 尝试执行以下代码
            promptAction.showActionMenu({ // 调用弹窗组件的showDialog方法
              title: "退休年份", // 弹窗标题文本
              buttons: [ // 弹窗中的按钮数组,每一个是一个选项
                {text: "2050", color:"#000000"},
                {text: "2060", color:"#000000"},
                {text: "2070", color:"#000000"}
              ],
            })
              .then(data=>{ // showDialog方法返回Promise对象,处理成功时执行的回调函数
                //输出点击的按钮索引,从0开始
                console.info(`showActionMenu success, click button: ${data.index}`) // 打印弹窗点击按钮的索引
              }).catch(err=>{ // 处理失败时执行的回调函数
              console.info(`showActionMenu error: ${err}`) // 打印错误信息
            })
          } catch (error) { // 捕获try代码块中的错误
            console.error(`showActionMenu args error code is ${error.code}, message is ${error.message}`); // 打印错误信息
          };
        })
    }
    .width("100%") // 设置列布局宽度为100%
    .margin({top:40}) // 设置列布局上边距为40
  }
}

执行后效果如下:

选择菜单后,上面的代码会打印出,选择的索引ID,如下:

十、滑动条组件

项目开发中可能会有设置设备音量大小,调节屏幕亮度等需求,实现类似需求一般都会使用到滑动条,ArkUI开发框架提供了滑动组件 Slider 来实现这些功能。

10.1.Slider定义介绍

接口:

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

参数:

参数名 参数类型 必填 参数描述
value number 当前进度值。默认值:0
min number 设置最小值。默认值:0
max number 设置最大值。默认值:100
step number 设置滑动条滑动步长。默认值:1
style SliderStyle 设置滑动条的滑块样式。默认值:SliderStyle.OutSet
direction8+ Axis 设置滑动条滑动方向为水平或竖直方向。默认值:Axis.Horizontal
reverse8+ boolean 设置滑动条取值范围是否反向。说明:设置为false时,水平方向滑动条为从左向右滑动,竖直方向滑动条从上向下滑动,设置为true时,水平方向滑动条为从右向左滑动,竖直方向滑动条从下向上滑动。默认值:false

style滑块样式SliderStyle枚举说明

名称 描述
OutSet 滑块在滑轨上。
InSet 滑块在滑轨内。

案例演示如下:

js 复制代码
@Entry
@Component
struct SliderPage {
  build() {
    Column({space:10}){
      Slider({
        value: 20,                             //当前的进度值
        min:0,                                 //设置最小值
        max:100,                               //设置最大值
        step:1,                                //设置滑动条滑动步长
        style: SliderStyle.InSet,              //设置滑动条的滑动样式  InSet滑块在滑轨内
        direction: Axis.Horizontal,            //设置滑动条为水平方法
        reverse:false                          //设置滑动条取值范围是否反向,false正向滑动
      }).width(260)
        .height(60)
        .backgroundColor("#F5F5DC")

      Slider({
        value: 20,                             //当前的进度值
        min:0,                                 //设置最小值
        max:100,                               //设置最大值
        step:1,                                //设置滑动条滑动步长
        style: SliderStyle.OutSet,             //设置滑动条的滑动样式 OutSet滑块在滑轨外
        direction: Axis.Horizontal,            //设置滑动条为水平方法
        reverse:false                          //设置滑动条取值范围是否反向,false正向滑动
      })
        .width(260)
        .height(60)
        .backgroundColor("#F5F5DC")

    }
    .width("100%")
    .height("100%")
    .margin({top:20})
  }
}

预览效果如下:

10.2.属性

滑动场景属性如下:

名称 参数类型 描述
blockColor ResourceColor 设置滑块的颜色。
trackColor ResourceColor 设置滑轨的背景颜色。
selectedColor ResourceColor 设置滑轨的已滑动颜色。
showSteps boolean 设置当前是否显示步长刻度值。默认值:false
showTips boolean 设置滑动时是否显示气泡提示百分比。默认值:false
trackThickness Length 设置滑轨的粗细。
maxLabel(已废弃) string 设置最大标签。
minLabel(已废弃) string 设置最小标签。

案例1:设置滑块的颜色、设置滑轨的背景颜色、设置滑轨的已滑动颜色。

js 复制代码
@Entry
@Component
struct SliderPage {
  build() {
    Column({space:10}){
      Slider({
        value: 20,                             //当前的进度值
        min:0,                                 //设置最小值
        max:100,                               //设置最大值
        step:1,                                //设置滑动条滑动步长
        style: SliderStyle.InSet,              //设置滑动条的滑动样式  InSet滑块在滑轨内
        direction: Axis.Horizontal,            //设置滑动条为水平方法
        reverse:false                          //设置滑动条取值范围是否反向,false正向滑动
      }).width(260)
        .height(60)
        .backgroundColor("#F5F5DC")

      Slider({
        value: 20,                             //当前的进度值
        min:0,                                 //设置最小值
        max:100,                               //设置最大值
        step:1,                                //设置滑动条滑动步长
        style: SliderStyle.OutSet,             //设置滑动条的滑动样式 OutSet滑块在滑轨外
        direction: Axis.Horizontal,            //设置滑动条为水平方法
        reverse:false                          //设置滑动条取值范围是否反向,false正向滑动
      })
        .width(260)
        .height(60)
        .backgroundColor("#F5F5DC")
        .blockColor(Color.Red)         //设置滑动颜色
        .trackColor(Color.Pink)        //设置滑轨颜色
        .selectedColor(Color.Green)      //设置滑动的已滑动颜色
    }
    .width("100%")
    .height("100%")
    .margin({top:20})
  }
}

预览效果如下:

案例2::设置当前显示步长刻度值、设置滑动时是否显示气泡提示百分比、设置滑动条粗细。

js 复制代码
@Entry
@Component
struct SliderPage {
  build() {
    Column({space:10}){
      Slider({
        value: 20,                             //当前的进度值
        min:0,                                 //设置最小值
        max:100,                               //设置最大值
        step:1,                                //设置滑动条滑动步长
        style: SliderStyle.InSet,              //设置滑动条的滑动样式  InSet滑块在滑轨内
        direction: Axis.Horizontal,            //设置滑动条为水平方法
        reverse:false                          //设置滑动条取值范围是否反向,false正向滑动
      }).width(260)
        .height(60)
        .backgroundColor("#F5F5DC")

      Slider({
        value: 20,                             //当前的进度值
        min:0,                                 //设置最小值
        max:100,                               //设置最大值
        step:10,                                //设置滑动条滑动步长
        style: SliderStyle.OutSet,             //设置滑动条的滑动样式 OutSet滑块在滑轨外
        direction: Axis.Horizontal,            //设置滑动条为水平方法
        reverse:false                          //设置滑动条取值范围是否反向,false正向滑动
      })
        .width(260)
        .height(60)
        .backgroundColor("#F5F5DC")
        .blockColor(Color.Red)         //设置滑动颜色
        .trackColor(Color.Pink)        //设置滑轨颜色
        .selectedColor(Color.Green)    //设置滑动的已滑动颜色
        .showSteps(true)               //设置显示步长 可以修改上面的步长后在看效果
        .showTips(true)                //设置显示进度
        .trackThickness(8)             //设置滚动条的宽度
    }
    .width("100%")
    .height("100%")
    .margin({top:20})
  }
}

预览效果如下:设置了步长为10,显示步长

10.3.事件

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

名称 功能描述
onChange(callback: (value: number, mode: SliderChangeMode) => void) Slider滑动时触发事件回调。value:当前进度值。mode:拖动状态。

SliderChangeMode枚举值为:

名称 描述
Begin 0 用户开始拖动滑块。
Moving 1 用户拖动滑块中。
End 2 用户结束拖动滑块。
Click 3 用户点击滑动条使滑块位置移动。

案例演示随着滚动条的拖动,修改图片显示的宽度,如下:

js 复制代码
@Entry
@Component
struct SliderPage {
  @State imageWidth:number = 100

  build() {
    Column({space:10}){
      Row(){
        Image($r('app.media.Snip'))
          .width(this.imageWidth)
      }
      .height(300)

      Row(){
        Slider({
          value: 100,                             //当前的进度值
          min:100,                                 //设置最小值
          max:300,                               //设置最大值
          step:1,                                //设置滑动条滑动步长
          style: SliderStyle.OutSet,              //设置滑动条的滑动样式  InSet滑块在滑轨内
          direction: Axis.Horizontal,            //设置滑动条为水平方法
          reverse:false                          //设置滑动条取值范围是否反向,false正向滑动
        })
          .height(60)
          .showSteps(true)      //显示步长
          .showTips(true)       //显示进度
          .trackThickness(5)    //设置滚动条宽度
          .backgroundColor("#A9A9A9")
          .onChange((value:number)=>{
            this.imageWidth = value
          })
      }
    }
    .width("100%")
    .height("100%")
    .margin({top:20})
  }
}

执行后如下:

十一、评分条组件

项目开发中可能会有设置评分的需求,比如给用户一个弹窗,让用户给当前 APP 设置评分等场景,ArkUI开发框架提供了评分条组件 Rating 来实现这个功能。

11.1.Rating定义

提供在给定范围内选择评分的组件。接口如下:

css 复制代码
Rating(options?: { rating: number, indicator?: boolean })

参数:

参数名 参数类型 必填 参数描述
rating number 设置并接收评分值。默认值:0取值范围: [0, stars]小于0取0,大于stars取最大值stars。
indicator boolean 设置评分组件作为指示器使用,不可改变评分。默认值:false, 可进行评分说明:indicator=true时,默认组件高度height=12.0vp,组件width=height * stars。indicator=false时,默认组件高度height=28.0vp,组件width=height * stars。

案例如下:

js 复制代码
@Entry
@Component
struct RatingPage {
  build() {
    Column(){
      Rating(
        {rating:0, indicator: true}  //设置不可操作,默认值为0
      ).width(200)
        .height(60)

      Rating(
        {rating:0, indicator: false}  //设置可操作,默认值为0
      ).width(200)
        .height(60)
      
    }
    .width("100%")
    .height("100%")
    .padding(10)
  }
}

预览效果如下:

11.2.属性

名称 参数类型 描述
stars number 设置评分总数。默认值:5从API version 9开始,该接口支持在ArkTS卡片中使用。说明:设置为小于0的值时,按默认值显示。
stepSize number 操作评级的步长。默认值:0.5从API version 9开始,该接口支持在ArkTS卡片中使用。说明:设置为小于0.1的值时,按默认值显示。取值范围为[0.1, stars]。
starStyle {backgroundUri: string,foregroundUri: string,secondaryUri?: string} backgroundUri:未选中的星级的图片链接,可由用户自定义或使用系统默认图片。foregroundUri:选中的星级的图片路径,可由用户自定义或使用系统默认图片。secondaryUri:部分选中的星级的图片路径,可由用户自定义或使用系统默认图片。从API version 9开始,该接口支持在ArkTS卡片中使用。说明:startStyle属性所支持的图片类型能力参考Image组件。支持加载本地图片和网络图片,暂不支持PixelMap类型和Resource资源。默认图片加载方式为异步,暂不支持同步加载。设置值为undefined或者空字符串时,rating会选择加载系统默认星型图源。

说明

  • rating宽高为[width, height]时,单个图片的绘制区域为[width / stars, height]。
  • 为了指定绘制区域为方形,建议自定义宽高时采取[height * stars, height], width = height * stars的方式。

案例如下:

js 复制代码
@Entry
@Component
struct RatingPage {
  build() {
    Column(){
      Rating(
        {rating:2, indicator: true}  //设置不可操作,设置默认值为2,打开就有两个星星
      ).width(200)
        .height(60)

      Rating(
        {rating:0, indicator: false}  //设置可操作,默认值为0
      )
        .width(200)
        .height(60)
        .stars(8)              //设置总共有10颗星星
        .stepSize(0.5)          //设置步长为0.5

    }
    .width("100%")
    .height("100%")
    .padding(10)
  }
}

预览效果如下:

11.3.Rating事件介绍

事件说明:

名称 功能描述
onChange(callback:(value: number) => void) 操作评分条的评星发生改变时触发该回调。从API version 9开始,该接口支持在ArkTS卡片中使用。

案例说明如下:

js 复制代码
@Entry
@Component
struct RatingPage {

  @State rating:number = 1

  build() {
    Column(){
      Rating({
        rating:this.rating, //设置默认值
        indicator: false    //设置可以操作打分
      })
        .width(220)
        .height(50)
        .stars(10)          //10颗星星
        .stepSize(0.5)      //设置步长0.5
        .onChange((value:number)=>{
          //修改总分数
          this.rating = value
        })

      Text(`评分数:${this.rating}`).fontSize(25).width("90%").textAlign(TextAlign.Center)
    }
    .width("100%")
    .height("100%")
    .padding(10)
  }
}

预览效果如下:

相关推荐
崔庆才丨静觅8 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60618 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了8 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅9 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅9 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅9 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment9 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅10 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊10 小时前
jwt介绍
前端
爱敲代码的小鱼10 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax