HarmonyOS应用开发-基础组件,你学废了吗?

按钮(Button)

Button是按钮组件,通常用于响应用户的点击操作。

不同类型的按钮

按钮的类型:

  • 胶囊按钮
  • 圆形按钮
  • 普通按钮

示例代码:

// 普通按钮
Button('文字', { type: ButtonType.Normal })
  // 设置圆角
  .borderRadius(8)
  .width(100)
  .height(40)
  .margin(10)

// 胶囊类型(默认)
Button('文字', { type: ButtonType.Capsule })
  .width(90)
  .height(40)
  .margin(10)

// 原型按钮
Button('文字', { type: ButtonType.Circle })
  .width(90)
  .height(90)
  .margin(10)

自定义按钮

自定义按钮,在按钮中设置图片+文字

// 自定义按钮,在按钮中设置图片+文字
Button({ type: ButtonType.Capsule }) {
  Row() {
    Image($r('app.media.icon')).width(20).height(40).margin({ left: 12 })
    Text('loading').fontSize(12).fontColor(0xffffff).margin({ left: 5, right: 12 })
  }.alignItems(VerticalAlign.Center)
}
.borderRadius(8)
.width(90)
.height(40)
.margin(10)
.onClick(() => {
  console.info("点击事件")
})

实现效果:
image.png

单选框(Radio)

Radio是单选框组件,通常用于提供相应的用户交互选择项,同一组的Radio中只有一个可以被选中。
使用Radio({ value: ‘Radio1’, group: ‘radioGroup’ })

  • value是单选框的名称
  • group是单选框的所属群组名称
  • checked属性可以设置单选框的状态,状态分别为false和true时,设置为true时表示单选框被选中
Row() {
  Radio({ value: 'Radio1', group: 'radioGroup' })
    .checked(true)
    .onChange((isChecked: boolean) => {
      if (isChecked) {
        //需要执行的操作
        promptAction.showToast({ message: 'Radio1' })
      }
    })
  Text('选项1')
    .fontSize(16)
    .margin({ left: 10 })
}.width('90%')

Row() {
  Radio({ value: 'Radio2', group: 'radioGroup' })
    .onChange((isChecked: boolean) => {
      if (isChecked) {
        //需要执行的操作
        promptAction.showToast({ message: 'Radio2' })
      }
    })
  Text('选项2')
    .fontSize(16)
    .margin({ left: 10 })
}.width('90%')

实现效果:
image.png

切换按钮(Toggle)

同Android中的swtich开关。
Toggle可以设置类型、是否选择。ToggleType为开关类型,包括Button、Checkbox和Switch;isOn为切换按钮的状态。

区别:

  • 类型为Checkbox和Switch时,不可以包含子组件
  • 类型为Button时,可以包含子组件,如包含Text文本等

切换事件,使用onChange设置切换事件

.onChange((isOn: boolean) => {
  if (isOn) {
    promptAction.showToast({ message: '选中' })
  }else {
    promptAction.showToast({ message: '未选中' })
  }
})

代码示例:

Row() {
  Toggle({ type: ToggleType.Button }) {
    Text('选项1')
      .fontColor('#182431')
      .fontSize(12)
  }.width(100)
  .margin({ right: 10 })

  Toggle({ type: ToggleType.Button }) {
    Text('选项2')
      .fontColor('#182431')
      .fontSize(12)
  }.width(100)
  .selectedColor(Color.Red)
}

Row() {
  Text('注册状态:').fontSize(14)
  Toggle({ type: ToggleType.Switch, isOn: false })
    // 点击事件
    .onChange((isOn: boolean) => {
      if (isOn) {
        promptAction.showToast({ message: '选中' })
      }
    })
}

Row() {
  Text('注册状态:').fontSize(14)
  Toggle({ type: ToggleType.Checkbox, isOn: true })
    // 点击事件
    .onChange((isOn: boolean) => {
      if (isOn) {
        promptAction.showToast({ message: '选中' })
      }else {
        promptAction.showToast({ message: '未选中' })
      }
    })

}

实现效果:
image.png

进度条(Progress)

Progress(options: {value: number, total?: number, type?: ProgressType})

创建type样式的进度条,其中value用于设置初始进度值,total用于设置进度总长度,type决定Progress样式。
ProgressType类型有:ProgressType.Linear(线性样式)、 ProgressType.Ring(环形无刻度样式)、ProgressType.ScaleRing(环形有刻度样式)、ProgressType.Eclipse(圆形样式)和ProgressType.Capsule(胶囊样式)

代码示例:

Progress({ value: 20, total: 100, type: ProgressType.Capsule })
  .width(200)
  .height(50)

Progress({ value: 10, total: 100, type: ProgressType.ScaleRing })
  .width(100)
  .height(100)
  .backgroundColor(Color.Black)
  .style({ strokeWidth: 15, scaleCount: 20, scaleWidth: 5 })
// 设置环形有刻度进度条宽度15,总刻度数为20,刻度宽度为5vp

// 从左往右,2号环形进度条
Progress({ value: 50, total: 150, type: ProgressType.Ring })
  .width(100)
  .height(100)
  .color(Color.Grey)    // 进度条前景色为灰色
  .style({ strokeWidth: 15})    // 设置strokeWidth进度条宽度为15.0vp

实现效果:
image.png

文本显示(Text)

文本显示是最常用,可以设置多个属性的组件。
代码示例:

Text('hello')
  .fontSize(20)
  .width('100%')
  .textAlign(TextAlign.Start)
  .padding(10)
  // 设置文字间距
  .letterSpacing(10)
  // 设置边框
  .border({ width: 1 })

实现效果:
image.png

在想不起来哪些属性可以设置时,可在开发工具上输入.,开发工具提示输入。
image.png

输入框(TextInput)

输入框的类型可设置为:Normal基本输入模式、Password密码输入模式、Email邮箱地址输入模式、Number纯数字输入模式、PhoneNumber电话号码输入模式。
代码示例:

import promptAction from '@ohos.promptAction';

@Entry
@Component
struct SecondPage {
  @State message: string = 'SecondPage'
  @State userName: string = ''
  @State password: string = ''

  build() {
    Row() {
      Column() {

        Text('hello')
          .fontSize(20)
          .width('100%')
          .textAlign(TextAlign.Start)
          .padding(10)
            // 设置文字间距
          .letterSpacing(10)
            // 设置边框
          .border({ width: 1 })

        Divider()

        TextInput({ placeholder: 'input your username' })
          .margin({ top: 20 })
          .onChange((value) => {
            this.userName = value;
          })
        TextInput({ placeholder: 'input your password' })
          .type(InputType.Password)
          .margin({ top: 20 })
          .onChange((value) => {
            this.password = value;
          })

        Button('提交')
          .width('90%')
          .margin({ top: 20 })
          .onClick(() => {
            promptAction.showToast({ message: 'username:' + this.userName + 'password:' + this.password })
          })


      }
      .width('100%')
    }
    .height('100%')
  }
}

实现效果:
image.png

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值