在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙ArkTS容器組件:Tabs

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-07-15 09:48 ? 次閱讀

Tabs

通過(guò)頁(yè)簽進(jìn)行內(nèi)容視圖切換的容器組件,每個(gè)頁(yè)簽對(duì)應(yīng)一個(gè)內(nèi)容視圖。

說(shuō)明:
開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
該組件從API Version 7開(kāi)始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。

子組件

僅可包含子組件[TabContent]。

接口

Tabs(value?: {barPosition?: BarPosition, index?: number, controller?: [TabsController]})

參數(shù)

參數(shù)名參數(shù)類(lèi)型必填參數(shù)描述
barPosition[BarPosition]設(shè)置Tabs的頁(yè)簽位置。 默認(rèn)值:BarPosition.Start
indexnumber設(shè)置當(dāng)前顯示頁(yè)簽的索引。 默認(rèn)值:0**說(shuō)明:**設(shè)置為小于0的值時(shí)按默認(rèn)值顯示。 可選值為[0, TabContent子節(jié)點(diǎn)數(shù)量-1]。 設(shè)置不同值時(shí),默認(rèn)生效切換動(dòng)效,可以設(shè)置animationDuration為0關(guān)閉動(dòng)畫(huà)。 從API version 10開(kāi)始,該參數(shù)支持[$$]雙向綁定變量。
controller[TabsController]設(shè)置Tabs控制器

BarPosition枚舉說(shuō)明

名稱(chēng)描述
Startvertical屬性方法設(shè)置為true時(shí),頁(yè)簽位于容器左側(cè);vertical屬性方法設(shè)置為false時(shí),頁(yè)簽位于容器頂部。
Endvertical屬性方法設(shè)置為true時(shí),頁(yè)簽位于容器右側(cè);vertical屬性方法設(shè)置為false時(shí),頁(yè)簽位于容器底部。

屬性

除支持[通用屬性]外,還支持以下屬性:

名稱(chēng)參數(shù)類(lèi)型描述
verticalboolean設(shè)置為false是為橫向Tabs,設(shè)置為true時(shí)為縱向Tabs。 默認(rèn)值:false
scrollableboolean設(shè)置為true時(shí)可以通過(guò)滑動(dòng)頁(yè)面進(jìn)行頁(yè)面切換,為false時(shí)不可滑動(dòng)切換頁(yè)面。 默認(rèn)值:true
barMode[BarMode],[ScrollableBarModeOptions]TabBar布局模式,BarMode為必選項(xiàng),ScrollableBarModeOptions為可選項(xiàng),具體描述見(jiàn)BarMode枚舉說(shuō)明、ScrollableBarModeOptions對(duì)象說(shuō)明。從API version 10開(kāi)始,支持ScrollableBarModeOptions參數(shù)。其中ScrollableBarModeOptions參數(shù)僅Scrollable模式下有效,非必填參數(shù)。 默認(rèn)值:BarMode.Fixed
barWidthnumberLength8+
barHeightnumberLength8+
animationDurationnumber點(diǎn)擊TabBar頁(yè)簽切換TabContent的動(dòng)畫(huà)時(shí)長(zhǎng)。不設(shè)置時(shí),點(diǎn)擊TabBar頁(yè)簽切換TabContent無(wú)動(dòng)畫(huà)。 默認(rèn)值:300**說(shuō)明:**設(shè)置為小于0或百分比時(shí),按默認(rèn)值300ms顯示。
divider10+[DividerStyle]null
fadingEdge10+boolean設(shè)置頁(yè)簽超過(guò)容器寬度時(shí)是否漸隱消失。 默認(rèn)值:true
barOverlap10+boolean設(shè)置TabBar是否背后變模糊并疊加在TabContent之上。 默認(rèn)值:false
barBackgroundColor10+[ResourceColor]設(shè)置TabBar的背景顏色。 默認(rèn)值:透明
barGridAlign10+[BarGridColumnOptions]以柵格化方式設(shè)置TabBar的可見(jiàn)區(qū)域。具體參見(jiàn)BarGridColumnOptions對(duì)象。僅水平模式下有效,[不適用于XS、XL和XXL設(shè)備]。

DividerStyle10+對(duì)象說(shuō)明

名稱(chēng)參數(shù)類(lèi)型必填描述
strokeWidth[Length]分割線(xiàn)的線(xiàn)寬(不支持百分比設(shè)置)。
color[ResourceColor]分割線(xiàn)的顏色。 默認(rèn)值:#33182431
startMargin[Length]分割線(xiàn)與側(cè)邊欄頂端的距離(不支持百分比設(shè)置)。 默認(rèn)值:0.0 單位:vp
endMargin[Length]分割線(xiàn)與側(cè)邊欄底端的距離(不支持百分比設(shè)置)。 默認(rèn)值:0.0 單位:vp

BarGridColumnOptions10+對(duì)象說(shuō)明

名稱(chēng)參數(shù)類(lèi)型必填描述
margin[Dimension]網(wǎng)格模式下的column邊距(不支持百分比設(shè)置)。 默認(rèn)值:24.0 單位:vp
gutter[Dimension]網(wǎng)格模式下的column間隔(不支持百分比設(shè)置)。 默認(rèn)值:24.0 單位:vp
smnumber小屏下,頁(yè)簽占用的columns數(shù)量,必須是非負(fù)偶數(shù)。小屏為大于等于320vp但小于600vp。 默認(rèn)值為-1,代表頁(yè)簽占用TabBar全部寬度。
mdnumber中屏下,頁(yè)簽占用的columns數(shù)量,必須是非負(fù)偶數(shù)。中屏為大于等于600vp但小于800vp。 默認(rèn)值為-1,代表頁(yè)簽占用TabBar全部寬度。
lgnumber大屏下,頁(yè)簽占用的columns數(shù)量,必須是非負(fù)偶數(shù)。大屏為大于等于840vp但小于1024vp。 默認(rèn)值為-1,代表頁(yè)簽占用TabBar全部寬度。

ScrollableBarModeOptions10+對(duì)象說(shuō)明

名稱(chēng)參數(shù)類(lèi)型必填描述
margin[Dimension]Scrollable模式下的TabBar的左右邊距(不支持百分比設(shè)置)。 默認(rèn)值:0.0 單位:vp
nonScrollableLayoutStyle[LayoutStyle]Scrollable模式下不滾動(dòng)時(shí)的頁(yè)簽排布方式。 默認(rèn)值:LayoutStyle.ALWAYS_CENTER

BarMode枚舉說(shuō)明

名稱(chēng)描述
Scrollable每一個(gè)TabBar均使用實(shí)際布局寬度,超過(guò)總長(zhǎng)度(橫向Tabs的barWidth,縱向Tabs的barHeight)后可滑動(dòng)。
Fixed所有TabBar平均分配barWidth寬度(縱向時(shí)平均分配barHeight高度)。

LayoutStyle10+枚舉說(shuō)明

名稱(chēng)描述
ALWAYS_CENTER當(dāng)頁(yè)簽內(nèi)容超過(guò)TabBar寬度時(shí),TabBar可滾動(dòng)。 當(dāng)頁(yè)簽內(nèi)容不超過(guò)TabBar寬度時(shí),TabBar不可滾動(dòng),頁(yè)簽緊湊居中。
ALWAYS_AVERAGE_SPLITE當(dāng)頁(yè)簽內(nèi)容超過(guò)TabBar寬度時(shí),TabBar可滾動(dòng)。 當(dāng)頁(yè)簽內(nèi)容不超過(guò)TabBar寬度時(shí),TabBar不可滾動(dòng),且所有頁(yè)簽平均分配TabBar寬度。 僅水平模式下有效,否則視為L(zhǎng)ayoutStyle.ALWAYS_CENTER。
SPACE_BETWEEN_OR_CENTER當(dāng)頁(yè)簽內(nèi)容超過(guò)TabBar寬度時(shí),TabBar可滾動(dòng)。 當(dāng)頁(yè)簽內(nèi)容不超過(guò)TabBar寬度但超過(guò)TabBar寬度一半時(shí),TabBar不可滾動(dòng),頁(yè)簽緊湊居中。 當(dāng)頁(yè)簽內(nèi)容不超過(guò)TabBar寬度一半時(shí),TabBar不可滾動(dòng),保證頁(yè)簽居中排列在TabBar寬度一半,且間距相同。

事件

除支持[通用事件]外,還支持以下事件:

名稱(chēng)功能描述
onChange(event: (index: number) => void)Tab頁(yè)簽切換后觸發(fā)的事件。 - index:當(dāng)前顯示的index索引,索引從0開(kāi)始計(jì)算。 觸發(fā)該事件的條件: 1、TabContent支持滑動(dòng)時(shí),組件觸發(fā)滑動(dòng)時(shí)觸發(fā)。 2、通過(guò)[控制器]API接口調(diào)用。 3、通過(guò)[狀態(tài)變量]構(gòu)造的屬性值進(jìn)行修改。 4、通過(guò)頁(yè)簽處點(diǎn)擊觸發(fā)。
onTabBarClick(event: (index: number) => void)10+Tab頁(yè)簽點(diǎn)擊后觸發(fā)的事件。 - index:被點(diǎn)擊的index索引,索引從0開(kāi)始計(jì)算。 觸發(fā)該事件的條件: 通過(guò)頁(yè)簽處點(diǎn)擊觸發(fā)。

TabsController

Tabs組件的控制器,用于控制Tabs組件進(jìn)行頁(yè)簽切換。不支持一個(gè)TabsController控制多個(gè)Tabs組件。

導(dǎo)入對(duì)象

let controller: TabsController = new TabsController()

changeIndex

changeIndex(value: number): void

控制Tabs切換到指定頁(yè)簽。

參數(shù):

參數(shù)名參數(shù)類(lèi)型必填參數(shù)描述HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
valuenumber頁(yè)簽在Tabs里的索引值,索引值從0開(kāi)始。**說(shuō)明:**設(shè)置小于0或大于最大數(shù)量的值時(shí),該事件失效。
QQ截圖20240705211022.png

示例

示例1

// xxx.ets
@Entry
@Component
struct TabsExample {
  @State fontColor: string = '#182431'
  @State selectedFontColor: string = '#007DFF'
  @State currentIndex: number = 0
  private controller: TabsController = new TabsController()

  @Builder TabBuilder(index: number, name: string) {
    Column() {
      Text(name)
        .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
        .fontSize(16)
        .fontWeight(this.currentIndex === index ? 500 : 400)
        .lineHeight(22)
        .margin({ top: 17, bottom: 7 })
      Divider()
        .strokeWidth(2)
        .color('#007DFF')
        .opacity(this.currentIndex === index ? 1 : 0)
    }.width('100%')
  }

  build() {
    Column() {
      Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
        TabContent() {
          Column().width('100%').height('100%').backgroundColor('#00CB87')
        }.tabBar(this.TabBuilder(0, 'green'))

        TabContent() {
          Column().width('100%').height('100%').backgroundColor('#007DFF')
        }.tabBar(this.TabBuilder(1, 'blue'))

        TabContent() {
          Column().width('100%').height('100%').backgroundColor('#FFBF00')
        }.tabBar(this.TabBuilder(2, 'yellow'))

        TabContent() {
          Column().width('100%').height('100%').backgroundColor('#E67C92')
        }.tabBar(this.TabBuilder(3, 'pink'))
      }
      .vertical(false)
      .barMode(BarMode.Fixed)
      .barWidth(360)
      .barHeight(56)
      .animationDuration(400)
      .onChange((index: number) = > {
        this.currentIndex = index
      })
      .width(360)
      .height(296)
      .margin({ top: 52 })
      .backgroundColor('#F1F3F5')
    }.width('100%')
  }
}

tabs2

示例2

// xxx.ets
@Entry
@Component
struct TabsDivider1 {
  private controller1: TabsController = new TabsController()
  @State dividerColor: string = 'red'
  @State strokeWidth: number = 2
  @State startMargin: number = 0
  @State endMargin: number = 0
  @State nullFlag: boolean = false

  build() {
    Column() {
      Tabs({ controller: this.controller1 }) {
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Pink)
        }.tabBar('pink')

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Yellow)
        }.tabBar('yellow')

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Blue)
        }.tabBar('blue')

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Red)
        }.tabBar('red')
      }
      .vertical(true)
      .scrollable(true)
      .barMode(BarMode.Fixed)
      .barWidth(70)
      .barHeight(200)
      .animationDuration(400)
      .onChange((index: number) = > {
        console.info(index.toString())
      })
      .height('200vp')
      .margin({ bottom: '12vp' })
      .divider(this.nullFlag ? null : {
        strokeWidth: this.strokeWidth,
        color: this.dividerColor,
        startMargin: this.startMargin,
        endMargin: this.endMargin
      })

      Button('常規(guī)Divider').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          this.nullFlag = false;
          this.strokeWidth = 2;
          this.dividerColor = 'red';
          this.startMargin = 0;
          this.endMargin = 0;
        })
      Button('空Divider').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          this.nullFlag = true
        })
      Button('顏色變?yōu)樗{(lán)色').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          this.dividerColor = 'blue'
        })
      Button('寬度增加').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          this.strokeWidth += 2
        })
      Button('寬度減小').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          if (this.strokeWidth > 2) {
            this.strokeWidth -= 2
          }
        })
      Button('上邊距增加').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          this.startMargin += 2
        })
      Button('上邊距減少').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          if (this.startMargin > 2) {
            this.startMargin -= 2
          }
        })
      Button('下邊距增加').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          this.endMargin += 2
        })
      Button('下邊距減少').width('100%').margin({ bottom: '12vp' })
        .onClick(() = > {
          if (this.endMargin > 2) {
            this.endMargin -= 2
          }
        })
    }.padding({ top: '24vp', left: '24vp', right: '24vp' })
  }
}

tabs3

示例3

// xxx.ets
@Entry
@Component
struct TabsOpaque {
  @State message: string = 'Hello World'
  private controller: TabsController = new TabsController()
  private controller1: TabsController = new TabsController()
  @State selfFadingFade: boolean = true;
  build() {
    Column() {
      Button('子頁(yè)簽設(shè)置漸隱').width('100%').margin({ bottom: '12vp' })
        .onClick((event?: ClickEvent) = > {
          this.selfFadingFade = true;
        })
      Button('子頁(yè)簽設(shè)置不漸隱').width('100%').margin({ bottom: '12vp' })
        .onClick((event?: ClickEvent) = > {
          this.selfFadingFade = false;
        })
      Tabs({ barPosition: BarPosition.End, controller: this.controller }) {
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Pink)
        }.tabBar('pink')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Yellow)
        }.tabBar('yellow')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Blue)
        }.tabBar('blue')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
      }
      .vertical(false)
      .scrollable(true)
      .barMode(BarMode.Scrollable)
      .barHeight(80)
      .animationDuration(400)
      .onChange((index: number) = > {
        console.info(index.toString())
      })
      .fadingEdge(this.selfFadingFade)
      .height('30%')
      .width('100%')
      Tabs({ barPosition: BarPosition.Start, controller: this.controller1 }) {
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Pink)
        }.tabBar('pink')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Yellow)
        }.tabBar('yellow')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Blue)
        }.tabBar('blue')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar('green')
      }
      .vertical(true)
      .scrollable(true)
      .barMode(BarMode.Scrollable)
      .barHeight(200)
      .barWidth(80)
      .animationDuration(400)
      .onChange((index: number) = > {
        console.info(index.toString())
      })
      .fadingEdge(this.selfFadingFade)
      .height('30%')
      .width('100%')
    }
    .padding({ top: '24vp', left: '24vp', right: '24vp' })
  }
}

tabs4

示例4

// xxx.ets
@Entry
@Component
struct barBackgroundColorTest {
  private controller: TabsController = new TabsController()
  @State barOverlap: boolean = true;
  @State barBackgroundColor: string = '#88888888';

  build() {
    Column() {
      Button("barOverlap變化").width('100%').margin({ bottom: '12vp' })
        .onClick((event?: ClickEvent) = > {
          if (this.barOverlap) {
            this.barOverlap = false;
          } else {
            this.barOverlap = true;
          }
        })

      Tabs({ barPosition: BarPosition.Start, index: 0, controller: this.controller }) {
        TabContent() {
          Column() {
            Text(`barOverlap ${this.barOverlap}`).fontSize(16).margin({ top: this.barOverlap ? '56vp' : 0 })
            Text(`barBackgroundColor ${this.barBackgroundColor}`).fontSize(16)
          }.width('100%').width('100%').height('100%')
          .backgroundColor(Color.Pink)
        }
        .tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), "1"))

        TabContent() {
          Column() {
            Text(`barOverlap ${this.barOverlap}`).fontSize(16).margin({ top: this.barOverlap ? '56vp' : 0 })
            Text(`barBackgroundColor ${this.barBackgroundColor}`).fontSize(16)
          }.width('100%').width('100%').height('100%')
          .backgroundColor(Color.Yellow)
        }
        .tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), "2"))

        TabContent() {
          Column() {
            Text(`barOverlap ${this.barOverlap}`).fontSize(16).margin({ top: this.barOverlap ? '56vp' : 0 })
            Text(`barBackgroundColor ${this.barBackgroundColor}`).fontSize(16)
          }.width('100%').width('100%').height('100%')
          .backgroundColor(Color.Green)
        }
        .tabBar(new BottomTabBarStyle($r('sys.media.ohos_app_icon'), "3"))
      }
      .vertical(false)
      .barMode(BarMode.Fixed)
      .height('60%')
      .barOverlap(this.barOverlap)
      .scrollable(true)
      .animationDuration(10)
      .barBackgroundColor(this.barBackgroundColor)
    }
    .height(500)
    .padding({ top: '24vp', left: '24vp', right: '24vp' })
  }
}

tabs5

示例5

// xxx.ets
@Entry
@Component
struct TabsExample5 {
  private controller: TabsController = new TabsController()
  @State gridMargin: number = 10
  @State gridGutter: number = 10
  @State sm: number = -2
  @State clickedContent: string = "";

  build() {
    Column() {
      Row() {
        Button("gridMargin+10 " + this.gridMargin)
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.gridMargin += 10
          })
          .margin({ right: '6%', bottom: '12vp' })
        Button("gridMargin-10 " + this.gridMargin)
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.gridMargin -= 10
          })
          .margin({ bottom: '12vp' })
      }

      Row() {
        Button("gridGutter+10 " + this.gridGutter)
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.gridGutter += 10
          })
          .margin({ right: '6%', bottom: '12vp' })
        Button("gridGutter-10 " + this.gridGutter)
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.gridGutter -= 10
          })
          .margin({ bottom: '12vp' })
      }

      Row() {
        Button("sm+2 " + this.sm)
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.sm += 2
          })
          .margin({ right: '6%' })
        Button("sm-2 " + this.sm).width('47%').height(50).margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.sm -= 2
          })
      }

      Text("點(diǎn)擊內(nèi)容:" + this.clickedContent).width('100%').height(200).margin({ top: 5 })


      Tabs({ barPosition: BarPosition.End, controller: this.controller }) {
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Pink)
        }.tabBar(BottomTabBarStyle.of($r("sys.media.ohos_app_icon"), "1"))

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar(BottomTabBarStyle.of($r("sys.media.ohos_app_icon"), "2"))

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Blue)
        }.tabBar(BottomTabBarStyle.of($r("sys.media.ohos_app_icon"), "3"))
      }
      .width('350vp')
      .animationDuration(300)
      .height('60%')
      .barGridAlign({ sm: this.sm, margin: this.gridMargin, gutter: this.gridGutter })
      .backgroundColor(0xf1f3f5)
      .onTabBarClick((index: number) = > {
        this.clickedContent += "now index " + index + " is clickedn";
      })
    }
    .width('100%')
    .height(500)
    .margin({ top: 5 })
    .padding('10vp')
  }
}

tabs5

示例6

// xxx.ets
@Entry
@Component
struct TabsExample6 {
  private controller: TabsController = new TabsController()
  @State scrollMargin: number = 0
  @State layoutStyle: LayoutStyle = LayoutStyle.ALWAYS_CENTER
  @State text: string = "文本"

  build() {
    Column() {
      Row() {
        Button("scrollMargin+10 " + this.scrollMargin)
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.scrollMargin += 10
          })
          .margin({ right: '6%', bottom: '12vp' })
        Button("scrollMargin-10 " + this.scrollMargin)
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.scrollMargin -= 10
          })
          .margin({ bottom: '12vp' })
      }

      Row() {
        Button("文本增加 ")
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.text += '文本增加'
          })
          .margin({ right: '6%', bottom: '12vp' })
        Button("文本重置")
          .width('47%')
          .height(50)
          .margin({ top: 5 })
          .onClick((event?: ClickEvent) = > {
            this.text = "文本"
          })
          .margin({ bottom: '12vp' })
      }

      Row() {
        Button("layoutStyle.ALWAYS_CENTER")
          .width('100%')
          .height(50)
          .margin({ top: 5 })
          .fontSize(15)
          .onClick((event?: ClickEvent) = > {
            this.layoutStyle = LayoutStyle.ALWAYS_CENTER;
          })
          .margin({ bottom: '12vp' })
      }

      Row() {
        Button("layoutStyle.ALWAYS_AVERAGE_SPLIT")
          .width('100%')
          .height(50)
          .margin({ top: 5 })
          .fontSize(15)
          .onClick((event?: ClickEvent) = > {
            this.layoutStyle = LayoutStyle.ALWAYS_AVERAGE_SPLIT;
          })
          .margin({ bottom: '12vp' })
      }

      Row() {
        Button("layoutStyle.SPACE_BETWEEN_OR_CENTER")
          .width('100%')
          .height(50)
          .margin({ top: 5 })
          .fontSize(15)
          .onClick((event?: ClickEvent) = > {
            this.layoutStyle = LayoutStyle.SPACE_BETWEEN_OR_CENTER;
          })
          .margin({ bottom: '12vp' })
      }

      Tabs({ barPosition: BarPosition.End, controller: this.controller }) {
        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Pink)
        }.tabBar(SubTabBarStyle.of(this.text))

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }.tabBar(SubTabBarStyle.of(this.text))

        TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Blue)
        }.tabBar(SubTabBarStyle.of(this.text))
      }
      .animationDuration(300)
      .height('60%')
      .backgroundColor(0xf1f3f5)
      .barMode(BarMode.Scrollable, { margin: this.scrollMargin, nonScrollableLayoutStyle: this.layoutStyle })
    }
    .width('100%')
    .height(500)
    .margin({ top: 5 })
    .padding('24vp')
  }
}

tabs5

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 組件
    +關(guān)注

    關(guān)注

    1

    文章

    515

    瀏覽量

    17881
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2386

    瀏覽量

    42961
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HarmonyOS應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)-容器組件tabs

    tab-bar。的子組件,用來(lái)展示tab的標(biāo)簽區(qū),子組件排列方式為橫向排列。除支持通用屬性外,還支持如下屬性:3. tab-content。的子組件,用來(lái)展示tab的內(nèi)容區(qū),高度默認(rèn)充滿(mǎn)ta
    發(fā)表于 11-16 16:36

    鴻蒙ArkUI開(kāi)發(fā)-Tabs組件的使用

    鴻蒙ArkUI開(kāi)發(fā)-Tabs組件的使用
    的頭像 發(fā)表于 01-19 16:01 ?1992次閱讀
    <b class='flag-5'>鴻蒙</b>ArkUI開(kāi)發(fā)-<b class='flag-5'>Tabs</b><b class='flag-5'>組件</b>的使用

    鴻蒙ArkTS容器組件:Column

    沿垂直方向布局的容器
    的頭像 發(fā)表于 07-05 16:32 ?495次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Column

    鴻蒙ArkTS容器組件:Flex

    以彈性方式布局子組件容器組件
    的頭像 發(fā)表于 07-08 10:19 ?556次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Flex

    鴻蒙ArkTS容器組件:GridCol

    柵格子組件,必須作為柵格容器組件([GridRow])的子組件使用。
    的頭像 發(fā)表于 07-08 15:17 ?461次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:GridCol

    鴻蒙ArkTS容器組件:GridItem

    網(wǎng)格容器中單項(xiàng)內(nèi)容容器
    的頭像 發(fā)表于 07-09 09:25 ?453次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:GridItem

    鴻蒙ArkTS容器組件:Navigator

    路由容器組件,提供路由跳轉(zhuǎn)能力。
    的頭像 發(fā)表于 07-10 14:55 ?456次閱讀

    鴻蒙ArkTS容器組件:Refresh

    可以進(jìn)行頁(yè)面下拉操作并顯示刷新動(dòng)效的容器組件
    的頭像 發(fā)表于 07-11 16:11 ?564次閱讀

    鴻蒙ArkTS容器組件:RowSplit

    將子組件橫向布局,并在每個(gè)子組件之間插入一根縱向的分割線(xiàn)。
    的頭像 發(fā)表于 07-11 22:25 ?375次閱讀

    鴻蒙ArkTS容器組件:Scroll

    可滾動(dòng)的容器組件,當(dāng)子組件的布局尺寸超過(guò)父組件的尺寸時(shí),內(nèi)容可以滾動(dòng)。
    的頭像 發(fā)表于 07-12 15:24 ?1306次閱讀

    鴻蒙ArkTS容器組件:SideBarContainer

    提供側(cè)邊欄可以顯示和隱藏的側(cè)邊欄容器,通過(guò)子組件定義側(cè)邊欄和內(nèi)容區(qū),第一個(gè)子組件表示側(cè)邊欄,第二個(gè)子組件表示內(nèi)容區(qū)。
    的頭像 發(fā)表于 07-18 15:46 ?601次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:SideBarContainer

    鴻蒙ArkTS容器組件:Stack

    堆疊容器,子組件按照順序依次入棧,后一個(gè)子組件覆蓋前一個(gè)子組件
    的頭像 發(fā)表于 07-15 18:23 ?931次閱讀

    鴻蒙ArkTS容器組件:Swiper

    滑塊視圖容器,提供子組件滑動(dòng)輪播顯示的能力。
    的頭像 發(fā)表于 07-15 09:51 ?712次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Swiper

    鴻蒙ArkTS容器組件:TabContent

    僅在Tabs中使用,對(duì)應(yīng)一個(gè)切換頁(yè)簽的內(nèi)容視圖。
    的頭像 發(fā)表于 07-15 15:04 ?675次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:TabContent

    鴻蒙ArkTS容器組件:WaterFlow

    瀑布流容器,由“行”和“列”分割的單元格所組成,通過(guò)容器自身的排列規(guī)則,將不同大小的“項(xiàng)目”自上而下,如瀑布般緊密布局。
    的頭像 發(fā)表于 07-15 17:35 ?479次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:WaterFlow
    主站蜘蛛池模板: 欧美一区二区三区综合色视频| 天堂在线国产| 成年片色大黄全免费| 国产免费福利网站| 搡女人视频免费| 午夜性爽快| 禁漫羞羞a漫入口| 亚洲婷婷综合色高清在线| 亚洲电影在线| 色播五月综合| 天天干网址| 天堂资源在线最新版| 日韩中文字幕第一页| 久久99国产亚洲高清观看首页| 国产免费资源| 综合免费一区二区三区| 狠狠色噜噜狠狠狠狠97| 五月婷婷久久综合| 欧美三级手机在线| 成人午夜性视频欧美成人| 天天操夜夜操视频| 亚洲欧美啪啪| 最新日韩中文字幕| 日韩精品一区二区三区免费视频 | 欧美最猛性xxxx高清| 亚洲一区二区三区高清视频| 成人人免费夜夜视频观看| 狼色影院| 亚洲综合第一区| 欧美伊人网| 俺来也俺去啦久久综合网| 喷潮白浆直流在线播放| 丁香激情五月| 亚洲va久久久噜噜噜久久| 月夜免费观看高清在线完整| 天堂资源bt种子在线| 久久久五月| 天天草比| 亚洲一区区| 四虎库| 国产一级特黄aa大片在线|