按鈕(Button)

2024-01-25 13:14 更新

Button是按鈕組件,通常用于響應(yīng)用戶的點(diǎn)擊操作,其類型包括膠囊按鈕、圓形按鈕、普通按鈕。Button當(dāng)做為容器使用時(shí)可以通過添加子組件實(shí)現(xiàn)包含文字、圖片等元素的按鈕。具體用法請(qǐng)參考Button。

創(chuàng)建按鈕

Button通過調(diào)用接口來創(chuàng)建,接口調(diào)用有以下兩種形式:

  • 創(chuàng)建不包含子組件的按鈕。
    1. Button(label?: string, options?: { type?: ButtonType, stateEffect?: boolean })

    該接口用于創(chuàng)建不包含子組件的按鈕,其中l(wèi)abel用來設(shè)置按鈕文字,type用于設(shè)置Button類型,stateEffect屬性設(shè)置Button是否開啟點(diǎn)擊效果。

    1. Button('Ok', { type: ButtonType.Normal, stateEffect: true })
    2. .borderRadius(8)
    3. .backgroundColor(0x317aff)
    4. .width(90)
    5. .height(40)

  • 創(chuàng)建包含子組件的按鈕。
    1. Button(options?: {type?: ButtonType, stateEffect?: boolean})

    該接口用于創(chuàng)建包含子組件的按鈕,只支持包含一個(gè)子組件,子組件可以是基礎(chǔ)組件或者容器組件

    1. Button({ type: ButtonType.Normal, stateEffect: true }) {
    2. Row() {
    3. Image($r('app.media.loading')).width(20).height(40).margin({ left: 12 })
    4. Text('loading').fontSize(12).fontColor(0xffffff).margin({ left: 5, right: 12 })
    5. }.alignItems(VerticalAlign.Center)
    6. }.borderRadius(8).backgroundColor(0x317aff).width(90).height(40)

設(shè)置按鈕類型

Button有三種可選類型,分別為Capsule(膠囊類型)、Circle(圓形按鈕)和Normal(普通按鈕),通過type進(jìn)行設(shè)置。

  • 膠囊按鈕(默認(rèn)類型)

    此類型按鈕的圓角自動(dòng)設(shè)置為高度的一半,不支持通過borderRadius屬性重新設(shè)置圓角。

    1. Button('Disable', { type: ButtonType.Capsule, stateEffect: false })
    2. .backgroundColor(0x317aff)
    3. .width(90)
    4. .height(40)

  • 圓形按鈕

    此類型按鈕為圓形,不支持通過borderRadius屬性重新設(shè)置圓角。

    1. Button('Circle', { type: ButtonType.Circle, stateEffect: false })
    2. .backgroundColor(0x317aff)
    3. .width(90)
    4. .height(90)

  • 普通按鈕

    此類型的按鈕默認(rèn)圓角為0,支持通過borderRadius屬性重新設(shè)置圓角。

    1. Button('Ok', { type: ButtonType.Normal, stateEffect: true })
    2. .borderRadius(8)
    3. .backgroundColor(0x317aff)
    4. .width(90)
    5. .height(40)

自定義樣式

  • 設(shè)置邊框弧度。
    一般使用通用屬性來自定義按鈕樣式。例如通過borderRadius屬性設(shè)置按鈕的邊框弧度。
    1. Button('circle border', { type: ButtonType.Normal })
    2. .borderRadius(20)
    3. .height(40)

  • 設(shè)置文本樣式。

    通過添加文本樣式設(shè)置按鈕文本的展示樣式。

    1. Button('font style', { type: ButtonType.Normal })
    2. .fontSize(20)
    3. .fontColor(Color.Pink)
    4. .fontWeight(800)

  • 設(shè)置背景顏色。

    添加backgroundColor屬性設(shè)置按鈕的背景顏色。

    1. Button('background color').backgroundColor(0xF55A42)

  • 用作功能型按鈕。

    為刪除操作創(chuàng)建一個(gè)按鈕。

    1. Button({ type: ButtonType.Circle, stateEffect: true }) {
    2. Image($r('app.media.ic_public_delete_filled')).width(30).height(30)
    3. }.width(55).height(55).margin({ left: 20 }).backgroundColor(0xF55A42)

添加事件

Button組件通常用于觸發(fā)某些操作,可以綁定onClick事件來響應(yīng)點(diǎn)擊操作后的自定義行為。

  1. Button('Ok', { type: ButtonType.Normal, stateEffect: true })
  2. .onClick(()=>{
  3. console.info('Button onClick')
  4. })

場(chǎng)景示例

  • 用于啟動(dòng)操作。

    可以用按鈕啟動(dòng)任何用戶界面元素,按鈕會(huì)根據(jù)用戶的操作觸發(fā)相應(yīng)的事件。例如,在List容器里通過點(diǎn)擊按鈕進(jìn)行頁面跳轉(zhuǎn)。

    1. // xxx.ets
    2. import router from '@ohos.router';
    3. @Entry
    4. @Component
    5. struct ButtonCase1 {
    6. build() {
    7. List({ space: 4 }) {
    8. ListItem() {
    9. Button("First").onClick(() => {
    10. router.pushUrl({ url: 'pages/first_page' })
    11. })
    12. .width('100%')
    13. }
    14. ListItem() {
    15. Button("Second").onClick(() => {
    16. router.pushUrl({ url: 'pages/second_page' })
    17. })
    18. .width('100%')
    19. }
    20. ListItem() {
    21. Button("Third").onClick(() => {
    22. router.pushUrl({ url: 'pages/third_page' })
    23. })
    24. .width('100%')
    25. }
    26. }
    27. .listDirection(Axis.Vertical)
    28. .backgroundColor(0xDCDCDC).padding(20)
    29. }
    30. }

  • 用于表單的提交。

    在用戶登錄/注冊(cè)頁面,使用按鈕進(jìn)行登錄或注冊(cè)操作。

    1. // xxx.ets
    2. @Entry
    3. @Component
    4. struct ButtonCase2 {
    5. build() {
    6. Column() {
    7. TextInput({ placeholder: 'input your username' }).margin({ top: 20 })
    8. TextInput({ placeholder: 'input your password' }).type(InputType.Password).margin({ top: 20 })
    9. Button('Register').width(300).margin({ top: 20 })
    10. .onClick(() => {
    11. // 需要執(zhí)行的操作
    12. })
    13. }.padding(20)
    14. }
    15. }

  • 懸浮按鈕

    在可以滑動(dòng)的界面,滑動(dòng)時(shí)按鈕始終保持懸浮狀態(tài)。

    1. // xxx.ets
    2. @Entry
    3. @Component
    4. struct HoverButtonExample {
    5. private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    6. build() {
    7. Stack() {
    8. List({ space: 20, initialIndex: 0 }) {
    9. ForEach(this.arr, (item) => {
    10. ListItem() {
    11. Text('' + item)
    12. .width('100%').height(100).fontSize(16)
    13. .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
    14. }
    15. }, item => item)
    16. }.width('90%')
    17. Button() {
    18. Image($r('app.media.ic_public_add'))
    19. .width(50)
    20. .height(50)
    21. }
    22. .width(60)
    23. .height(60)
    24. .position({x: '80%', y: 600})
    25. .shadow({radius: 10})
    26. .onClick(() => {
    27. // 需要執(zhí)行的操作
    28. })
    29. }
    30. .width('100%')
    31. .height('100%')
    32. .backgroundColor(0xDCDCDC)
    33. .padding({ top: 5 })
    34. }
    35. }

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)