ArkUI Button按钮组件用法详解(附带实例)
Button 是用于响应用户点击操作的按钮组件,其类型包括胶囊按钮、圆形按钮、普通按钮。Button 作为容器使用时,可以通过添加子组件来包含文字、图片等元素。
1) 创建不包含子组件的按钮:
示例如下所示:

图 1 不包含子组件的按钮显示效果
2) 创建包含子组件的按钮:

图 2 包含子组件的按钮显示效果
1) 胶囊按钮的圆角自动设置为高度的一半,不支持通过 borderRadius 属性重新设置圆角。示例代码如下:

图 3 胶囊类型按钮显示效果
2) 圆形按钮不支持通过 borderRadius 属性重新设置圆角。示例代码如下:

图 4 圆形按钮显示效果
3) 普通按钮默认圆角为 0,支持通过 borderRadius 属性重新设置圆角。示例代码如下:

图 5 普通按钮显示效果

图 6 带边框弧度的按钮显示效果
2) 通过添加文本样式设置按钮文本的展示样式,示例代码如下:

图 7 设置文本样式后的按钮显示效果
3) 通过添加 backgroundColor 属性设置按钮的背景颜色,示例代码如下:

图 8 设置背景色后的按钮显示效果
4) 创建功能型按钮。例如,为删除操作创建一个按钮,示例代码如下:

图 9 删除按钮显示效果
ArkUI创建按钮
Button 通过调用接口来创建,接口调用有以下两种形式:1) 创建不包含子组件的按钮:
Button(label?: ResourceStr, options?: { type?: ButtonType, stateEffect?: boolean })其中,label 用来设置按钮文字,type 用于设置 Button 类型,stateEffect 用于设置 Button 是否开启点击效果。
示例如下所示:
@Entry @Component struct ButtonSample { build() { Column() { // 按钮组件,第一个参数设置按钮显示的文本 // 第二个参数设置按钮的类型为普通按钮,设置点击动效为true Button('Ok', { type: ButtonType.Normal, stateEffect: true }) // 设置按钮的边框圆角半径 .borderRadius(8) // 设置按钮的背景色 .backgroundColor(0x317aff) // 设置按钮的宽度 .width(90) // 设置按钮的高度 .height(40) }.alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 1 不包含子组件的按钮显示效果
2) 创建包含子组件的按钮:
Button(options?: {type?: ButtonType,stateEffect?: boolean})只支持包含一个子组件,子组件可以是基础组件或者容器组件。示例代码如下:
@Entry @Component struct ButtonSample { build() { Column() { // 设置按钮的效果为普通按钮 // 设置带有按钮的点按动效 Button({ type: ButtonType.Normal, stateEffect: true }) { // 按钮的子组件 Row() { // 图片 Image($r('app.media.loading')) // 设置图片的宽度为 20vp,高度为 40vp,左外边距为 12vp .width(20).height(20).margin({ left: 10 }) // 文本显示组件 Text('loading') // 设置文本字号为 12vp,字体颜色为白色,左外边距为 5vp,右外边距为 12vp .fontSize(12).fontColor(0xffffff).margin({ left: 5, right: 10 }) } // 行容器组件的子组件垂直方向排列方式为垂直居中 .alignItems(VerticalAlign.Center) } // 设置按钮的边框圆角半径为 8vp,背景色为蓝色,宽度为 90vp,高度为 40vp .borderRadius(8).backgroundColor(0x317aff).width(90).height(40) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 2 包含子组件的按钮显示效果
ArkUI设置按钮类型
Button 有 3 种可选类型:胶囊类型(Capsule)、圆形按钮(Circle)和普通按钮(Normal),通过 type 属性进行设置,其中胶囊类型为默认类型。1) 胶囊按钮的圆角自动设置为高度的一半,不支持通过 borderRadius 属性重新设置圆角。示例代码如下:
@Entry @Component struct ButtonSample { build() { Column() { // 设置按钮显示的文本 // 设置按钮的样式为胶囊样式,禁用点按动效 Button('Disable', { type: ButtonType.Capsule, stateEffect: false }) // 设置背景色,设置宽度为90vp,高度40vp .backgroundColor(0x317aff).width(90).height(40) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 3 胶囊类型按钮显示效果
2) 圆形按钮不支持通过 borderRadius 属性重新设置圆角。示例代码如下:
@Entry @Component struct ButtonSample { build() { Column() { // 设置按钮显示的文本 // 设置按钮的样式为圆形,禁用点按动效 Button('Circle', { type: ButtonType.Circle, stateEffect: false }) // 设置按钮的背景色,设置按钮的宽度和高度都是90vp .backgroundColor(0x317aff).width(90).height(90) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 4 圆形按钮显示效果
3) 普通按钮默认圆角为 0,支持通过 borderRadius 属性重新设置圆角。示例代码如下:
@Entry @Component struct ButtonSample { build() { Column() { // 设置按钮显示的文本 // 设置按钮的样式为普通样式 // 启用点按动效 Button('Ok', { type: ButtonType.Normal, stateEffect: true }) // 设置按钮的边框圆角半径 .borderRadius(8) // 设置按钮的背景色 .backgroundColor(0x317aff) // 设置按钮的宽度为 90vp .width(90) // 设置按钮的高度为 40vp .height(40) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 5 普通按钮显示效果
ArkUI自定义样式
1) 通过 borderRadius 属性设置按钮的边框弧度,示例代码如下:@Entry @Component struct ButtonSample { build() { Column() { // 设置按钮显示的文本 // 设置按钮的类型为普通样式 Button('circle border', { type: ButtonType.Normal }) // 设置按钮的边框圆角半径为20vp // 设置按钮的高度为40vp .borderRadius(20).height(40) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 6 带边框弧度的按钮显示效果
2) 通过添加文本样式设置按钮文本的展示样式,示例代码如下:
@Entry @Component struct ButtonSample { build() { Column() { // 设置按钮显示的文本 // 设置按钮的样式为普通样式 Button('font style', { type: ButtonType.Normal }) // 设置按钮显示的文本字号为20vp // 设置按钮显示的文本颜色为粉色 // 设置按钮显示的文本粗细 .fontSize(20).fontColor(Color.Pink).fontWeight(800) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 7 设置文本样式后的按钮显示效果
3) 通过添加 backgroundColor 属性设置按钮的背景颜色,示例代码如下:
@Entry @Component struct ButtonSample { build() { Column() { // 设置按钮显示的文本 Button('background color') // 设置按钮的背景色 .backgroundColor(0xF55A42) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 8 设置背景色后的按钮显示效果
4) 创建功能型按钮。例如,为删除操作创建一个按钮,示例代码如下:
// 通过 Record 类型数据设置布局参数 let MarLeft: Record<string, number> = { 'left': 20 } @Entry @Component struct ButtonSample { build() { Column() { // 设置按钮的样式为圆形,启用点按动效 Button({ type: ButtonType.Circle, stateEffect: true }) { // 按钮的子组件为图片组件,将它的宽度和高度都设置为30vp Image($r('app.media.ic_public_delete_filled')).width(30).height(30) } // 设置按钮的宽度和高度都是55vp .width(55).height(55) // 使用 Record 类型的数据设置按钮的外边距,设置按钮的背景色 .margin(MarLeft).backgroundColor(0xF55A42) } // 设置子组件水平方向居中对齐 .alignItems(HorizontalAlign.Center) .height('100%').width('100%') } }显示效果如下图所示:

图 9 删除按钮显示效果
ArkUI添加事件
Button 组件通常用于触发某些操作,可以绑定 onClick 事件来响应点击操作后的自定义行为。Button('Ok', { type: ButtonType.Normal, stateEffect: true }) // 添加按钮的点击事件处理函数 .onClick(()=>{ console.info('Button onClick') })