鸿蒙应用开发从入门到实战(十二):ArkUI组件Button&Toggle

简介: ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解按钮组件Button和Toggle的使用。

大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!

ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解按钮组件Button和Toggle的使用。

一、按钮Button

1.1 概述

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

1.2 参数

Button组件有两种使用方式,分别是不包含子组件包含子组件,两种方式下,Button 组件所需的参数有所不同,下面分别介绍

1.2.1 不包含子组件

不包含子组件时,Button组件所需的参数如下

Button(label?: string, options?: { type?: ButtonType, stateEffect?: boolean })
  • label

label为按钮上显示的文字内容。

  • options.type

options.type为按钮形状,该属性的类型ButtonType,可选的枚举值有

名称 描述 效果
ButtonType.Capsule 胶囊形状 1胶囊形状.png
ButtonType.Circle 圆形 2圆形.png
ButtonType.Normal 普通形状 3普通形状.png
  • options.stateEffect

options.stateEffect表示是否开启点击效果,点击效果如下
4点击效果.gif

1.2.2 包含子组件

子组件会作为按钮上显示的内容,可以是图片、文字等。这种方式下,Button组件就不在需要label参数了,具体如下

Button(options?: {type?: ButtonType, stateEffect?: boolean})

示例代码:

拷贝icon_new_folder.png到resources/base/media目录下

在component目录下新建button目录,新建ButtonParameter.ets文件

@Entry
@Component
// Button按钮参数
struct ButtonParameter {
   

  build() {
   
    Column({
    space: 50 }) {
   

      //1、不包含子组件
      Button('按钮', {
    type: ButtonType.Capsule, stateEffect: false })
        .fontSize(25)
        .width(150)
        .height(60)

      //2、包含子组件
      Button({
    type: ButtonType.Capsule, stateEffect: true }) {
   
        Row({
    space: 5 }) {
   
          Image($r('app.media.icon_new_folder'))
            .width(30)
            .height(30)
          Text('新建')
            .fontColor(Color.White)
            .fontSize(25)
            .fontWeight(500)
        }
      }.height(60)
      .width(150)

    }.width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}

1.3 常用属性

1.3.1 背景颜色

按钮的颜色可使用backgroundColor()方法进行设置,例如

Button('绿色按钮').backgroundColor(Color.Green)

1.3.2 边框圆角

按钮的边框圆角大小可使用borderRadius()方法进行设置,例如

Button('圆角按钮', { type: ButtonType.Normal }).borderRadius(10)

示例代码:

button目录下新建ButtonAttributePage.ets文件

@Entry
@Component
// Button按钮属性
struct ButtonAttributePage {
   

  build() {
   
    Row() {
   
      // 1、背景颜色 backgroundColor
      Column({
    space: 50 }) {
   
        Button('绿色按钮')
          .fontSize(25)
          .width(150)
          .height(60)
          .backgroundColor(Color.Green)

        // 2、边框圆角 borderRadius
        Button('圆角按钮', {
    type: ButtonType.Normal })
          .fontSize(25)
          .width(150)
          .height(60)
          .borderRadius(20)

      }.width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
    }
  }
}

1.4 常用事件

对于Button组件而言,最为常用的就是点击事件,可以通过onClick()方法为按钮绑定点击事件,该方法的参数为一个回调函数,当按钮被点击时,就会触发该回调函数,例如

Button('点击事件').onClick(() => {
  console.log('我被点击了')
})

示例代码:

在button目录下新建ButtonEventPage.ets文件

@Entry
@Component
// Button按钮事件
struct ButtonEventPage {
   

  build() {
   
    Row() {
   
      // 1、点击事件
      Column({
    space: 50 }) {
   
        Button('点击事件')
          .fontSize(25)
          .width(150)
          .height(60)
          .onClick(() => {
   
            console.log('我被点击了')
          })


      }.width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
    }
  }
}

二、切换按钮Toggle

2.1 概述

Toggle为切换按钮组件,一般用于两种状态之间的切换,例如下图中的蓝牙开关。

4toggle.png

2.2 参数

Toggle组件的参数定义如下

Toggle(options: { type: ToggleType, isOn?: boolean })
  • type

type属性用于设置Toggle组件的类型,可通过ToggleType枚举类型进行设置,可选的枚举值如下

名称 描述 效果
ToggleType.Switch 开关 5switch.png
ToggleType.Checkbox 复选框 6checkbox.png
ToggleType.Button 按钮 7button.png
  • isOn

isOn属性用于设置Toggle组件的状态,例如

8开关状态.png

示例代码

在component目录下新建toggle目录,新建ToggleParameter.ets 文件

@Entry
@Component
// 切换按钮Toggle参数
struct ToggleParameter {
   

  build() {
   
    // type参数设置类型;ToggleType值:开关ToggleType.Switch 复选框ToggleType.Checkbox 按钮ToggleType.Button
    // isON设置组件状态
    Column({
    space: 20 }) {
   
      Row({
    space: 20 }) {
   
        Toggle({
    type: ToggleType.Switch, isOn: false })
        Toggle({
    type: ToggleType.Switch, isOn: true })
      }

      Row({
    space: 20 }) {
   
        Toggle({
    type: ToggleType.Checkbox, isOn: false })
        Toggle({
    type: ToggleType.Checkbox, isOn: true })
      }

      Row({
    space: 20 }) {
   
        Toggle({
    type: ToggleType.Button, isOn: false }) {
   
          Text('button')
        }
        Toggle({
    type: ToggleType.Button, isOn: true }) {
   
          Text('button')
        }
      }
    }.width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}

2.3 常用属性

2.3.1 选中状态背景色

可使用selectedColor()方法设置Toggle组件在选中(或打开)状态下的背景色,例如

9选中颜色.png

2.3.2 Switch滑块颜色

可使用设置switchPointColor()方法设置Switch类型的Toggle组件中的圆形滑块颜色,例如

10滑块颜色.png

示例代码:

在toggle目录下新建ToggleAttributePage.ets文件

@Entry
@Component
// 切换按钮Toggle常用属性
struct ToggleAttributePage {
   

  build() {
   
    Row() {
   
      Column({
    space: 50 }) {
   

        //1.选中状态背景色 selectedColor
        Row({
    space: 20 }) {
   
          Toggle({
    type: ToggleType.Switch, isOn: true })
            .selectedColor(Color.Green)
          Toggle({
    type: ToggleType.Checkbox, isOn: true })
            .selectedColor(Color.Green)
          Toggle({
    type: ToggleType.Button, isOn: true }) {
   
            Text('button')
          }.selectedColor('#66008000')

        }

        //2.Switch圆形滑块颜色 switchPointColor
        Toggle({
    type: ToggleType.Switch, isOn: true })
          .selectedColor(Color.Green)
          .switchPointColor(Color.Orange)

      }.width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
    }
  }
}

2.4 常用事件

Toggle组件常用的事件为change事件,每当Toggle组件的状态发生变化,就会触发change事件。开发者可通过onChange()方法为Toggle组件绑定change事件,该方法参数为一个回调函数,具体定义如下

onChange(callback: (isOn: boolean) => void)

Toggle组件的状态由关闭切换为打开时,isOntrue,从打开切换为关闭时,isOnfalse

示例代码:

拷贝素材到resources/base/media目录下,img_light.png、img_dark.png

在toggle目录下新建LightPage.ets

@Entry
@Component
struct LightPage {
   
  @State isOn: boolean = false;

  build() {
   
    Column({
    space: 20 }) {
   
      if (this.isOn) {
   
        Image($r('app.media.img_light'))
          .height(300)
          .width(300)
          .borderRadius(20)
      } else {
   
        Image($r('app.media.img_dark'))
          .height(300)
          .width(300)
          .borderRadius(20)
      }
      Toggle({
    type: ToggleType.Switch, isOn: this.isOn })
        .width(60)
        .height(30)
        .onChange((isOn) => {
   
          this.isOn = isOn;
        })
    }
    .height('100%')
    .width('100%')
    .justifyContent(FlexAlign.Center)
  }
}

《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容,防止迷路,欢迎关注!

相关文章
|
2月前
|
开发者 容器
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
231 12
|
2月前
|
API 数据处理
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
ArkUI提供滑块Slider与进度条Progress组件,用于鸿蒙原生APP开发。Slider支持拖动调节音量、亮度等,可设步长、方向及提示气泡;Progress支持线性、环形等多种样式,可自定义颜色、宽度与刻度,实时显示任务进度。
192 2
HarmonyOS实战—组件的外边距和内边距
HarmonyOS实战—组件的外边距和内边距
501 1
HarmonyOS实战—组件的外边距和内边距
|
18天前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
131 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
24天前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
206 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
26天前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
381 3
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素
|
23天前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
85 0
|
5月前
|
存储 IDE 定位技术
【HarmonyOS 5】鸿蒙组件&模板服务详解 - 助力高效开发的利器
在移动应用开发领域,效率与质量始终是开发者追求的核心目标。鸿蒙系统作为新兴的操作系统,为开发者提供了丰富且强大的开发资源,其中鸿蒙组件&模板服务更是成为开发者快速构建高质量应用的得力助手。
162 0

热门文章

最新文章