chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

jf_46214456 ? 來源: jf_46214456 ? 作者: jf_46214456 ? 2024-01-19 16:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在我們常用的應(yīng)用中,經(jīng)常會有視圖內(nèi)容切換的場景,來展示更加豐富的內(nèi)容。比如下面這個頁面,點擊底部的頁簽的選項,可以實現(xiàn)“首頁”和“我的” 兩個內(nèi)容視圖的切換。

ArkUI開發(fā)框架提供了一種頁簽容器組件Tabs,開發(fā)者通過Tabs組件可以很容易的實現(xiàn)內(nèi)容視圖的切換。頁簽容器Tabs的形式多種多樣,不同的頁面設(shè)計頁簽不一樣,可以把頁簽設(shè)置在底部、頂部或者側(cè)邊。

本文將詳細(xì)介紹Tabs組件的使用。

Tabs組件的簡單使用

Tabs組件僅可包含子組件TabContent,每一個頁簽對應(yīng)一個內(nèi)容視圖即TabContent組件。下面的示例代碼構(gòu)建了一個簡單的頁簽頁面:

@Entry
@Component
struct TabsExample {
 private controller: TabsController = new TabsController()
 
 build() {
 Column() {
 Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
 TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Green)
        }
        .tabBar('green')
 
 TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Blue)
        }
        .tabBar('blue')
 
 TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Yellow)
        }
        .tabBar('yellow')
 
 TabContent() {
          Column().width('100%').height('100%').backgroundColor(Color.Pink)
        }
        .tabBar('pink')
      }
      .barWidth('100%') // 設(shè)置TabBar寬度
      .barHeight(60) // 設(shè)置TabBar高度
      .width('100%') // 設(shè)置Tabs組件寬度
      .height('100%') // 設(shè)置Tabs組件高度
      .backgroundColor(0xF5F5F5) // 設(shè)置Tabs組件背景顏色
    }
    .width('100%')
    .height('100%')
  }
}

效果圖如下:

上面示例代碼中,Tabs組件中包含4個子組件TabContent,通過TabContent的tabBar屬性設(shè)置TabBar的顯示內(nèi)容。使用通用屬性width和height設(shè)置了Tabs組件的寬高,使用barWidth和barHeight設(shè)置了TabBar的寬度和高度。

說明

  • TabContent組件不支持設(shè)置通用寬度屬性,其寬度默認(rèn)撐滿Tabs父組件。
  • TabContent組件不支持設(shè)置通用高度屬性,其高度由Tabs父組件高度與TabBar組件高度決定。

設(shè)置TabBar布局模式

因為Tabs的布局模式默認(rèn)是Fixed的,所以Tabs的頁簽是不可滑動的。當(dāng)頁簽比較多的時候,可能會導(dǎo)致頁簽顯示不全,將布局模式設(shè)置為Scrollable的話,可以實現(xiàn)頁簽的滾動。 Tabs的布局模式有Fixed(默認(rèn))和Scrollable兩種:

  • BarMode.Fixed:所有TabBar平均分配barWidth寬度(縱向時平均分配barHeight高度),頁簽不可滾動,效果圖如下:

  • BarMode.Scrollable:每一個TabBar均使用實際布局寬度,超過總長度(橫向Tabs的barWidth,縱向Tabs的barHeight)后可滑動。

  • 當(dāng)頁簽比較多的時候,可以滑動頁簽,下面的示例代碼將barMode設(shè)置為BarMode.Scrollable,實現(xiàn)了可滾動的頁簽:
@Entry
@Component
struct TabsExample {
 private controller: TabsController = new TabsController()
 
 build() {
 Column() {
 Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
 TabContent() {
          Column()
            .width('100%')
            .height('100%')
            .backgroundColor(Color.Green)
        }
        .tabBar('green')
 
 TabContent() {
          Column()
            .width('100%')
            .height('100%')
            .backgroundColor(Color.Blue)
        }
        .tabBar('blue')
 
        ...
 
      }
      .barMode(BarMode.Scrollable)
      .barWidth('100%')
      .barHeight(60)
      .width('100%')
      .height('100%')
    }
  }
}

設(shè)置TabBar位置和排列方向 Tabs組件頁簽?zāi)J(rèn)顯示在頂部,某些場景下您可能希望Tabs頁簽出現(xiàn)在底部或者側(cè)邊,您可以使用Tabs組件接口中的參數(shù)barPosition設(shè)置頁簽位置。此外頁簽顯示位置還與vertical屬性相關(guān)聯(lián),vertical屬性用于設(shè)置頁簽的排列方向,當(dāng)vertical的屬性值為false(默認(rèn)值)時頁簽橫向排列,為true時頁簽縱向排列。 barPosition的值可以設(shè)置為BarPosition.Start(默認(rèn)值)和BarPosition.End:

  • BarPosition.Startvertical屬性方法設(shè)置為false(默認(rèn)值)時,頁簽位于容器頂部。
Tabs({ barPosition: BarPosition.Start }) {
  ...
}
.vertical(false) 
.barWidth('100%') 
.barHeight(60)

效果圖如下:

vertical屬性方法設(shè)置為true時,頁簽位于容器左側(cè)。

Tabs({ barPosition: BarPosition.Start }) {
  ...
}
.vertical(true) 
.barWidth(100) 
.barHeight(200)

效果圖如下:

  • BarPosition.Endvertical屬性方法設(shè)置為false時,頁簽位于容器底部。
Tabs({ barPosition: BarPosition.End }) {
  ...
}
.vertical(false) 
.barWidth('100%') 
.barHeight(60)

效果圖如下:

vertical屬性方法設(shè)置為true時,頁簽位于容器右側(cè)。

Tabs({ barPosition: BarPosition.End}) {
  ...
}
.vertical(true) 
.barWidth(100) 
.barHeight(200)

效果圖如下:

自定義TabBar樣式

TabBar的默認(rèn)顯示效果如下所示:

往往開發(fā)過程中,UX給我們的設(shè)計效果可能并不是這樣的,比如下面的這種底部頁簽效果:

TabContent的tabBar屬性除了支持string類型,還支持使用@Builder裝飾器修飾的函數(shù)。您可以使用@Builder裝飾器,構(gòu)造一個生成自定義TabBar樣式的函數(shù),實現(xiàn)上面的底部頁簽效果,示例代碼如下:

@Entry
@Component
struct TabsExample {
 @State currentIndex: number = 0;
 private tabsController: TabsController = new TabsController();
 
 @Builder TabBuilder(title: string, targetIndex: number, selectedImg: Resource, normalImg: Resource) {
 Column() {
      Image(this.currentIndex === targetIndex ? selectedImg : normalImg)
        .size({ width: 25, height: 25 })
      Text(title)
        .fontColor(this.currentIndex === targetIndex ? '#1698CE' : '#6B6B6B')
    }
    .width('100%')
    .height(50)
    .justifyContent(FlexAlign.Center)
    .onClick(() = > {
 this.currentIndex = targetIndex;
 this.tabsController.changeIndex(this.currentIndex);
    })
  }
 
 build() {
 Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) {
 TabContent() {
        Column().width('100%').height('100%').backgroundColor('#00CB87')
      }
      .tabBar(this.TabBuilder('首頁', 0, $r('app.media.home_selected'), $r('app.media.home_normal')))
 
 TabContent() {
        Column().width('100%').height('100%').backgroundColor('#007DFF')
      }
      .tabBar(this.TabBuilder('我的', 1, $r('app.media.mine_selected'), $r('app.media.mine_normal')))
    }
    .barWidth('100%')
    .barHeight(50)
    .onChange((index: number) = > {
 this.currentIndex = index;
    })
  }
}

示例代碼中將barPosition的值設(shè)置為BarPosition.End,使頁簽顯示在底部。使用@Builder修飾TabBuilder函數(shù),生成由Image和Text組成的頁簽。同時也給Tabs組件設(shè)置了TabsController控制器,當(dāng)點擊某個頁簽時,調(diào)用changeIndex方法進行頁簽內(nèi)容切換。 最后還需要給Tabs添加onChange事件,Tab頁簽切換后觸發(fā)該事件,這樣當(dāng)我們左右滑動內(nèi)容視圖的時候,頁簽樣式也會跟著改變。

審核編輯 黃宇

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

    關(guān)注

    60

    文章

    2839

    瀏覽量

    45334
  • OpenHarmony
    +關(guān)注

    關(guān)注

    31

    文章

    3920

    瀏覽量

    20677
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【HarmonyOS 5】鴻蒙中進度條的使用詳解

    【HarmonyOS 5】鴻蒙中進度條的使用詳解 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財# 一、HarmonyOS中Progress進度
    的頭像 發(fā)表于 07-11 18:26 ?700次閱讀
    【HarmonyOS 5】<b class='flag-5'>鴻蒙</b>中進度條的使用詳解

    【HarmonyOS 5】鴻蒙頁面和組件生命周期函數(shù)

    【HarmonyOS 5】鴻蒙頁面和組件生命周期函數(shù) ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財
    的頭像 發(fā)表于 07-11 18:24 ?772次閱讀

    【HarmonyOS 5】金融應(yīng)用開發(fā)鴻蒙組件實踐

    【HarmonyOS 5】金融應(yīng)用開發(fā)鴻蒙組件實踐 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##
    的頭像 發(fā)表于 07-11 18:20 ?731次閱讀
    【HarmonyOS 5】金融應(yīng)用<b class='flag-5'>開發(fā)</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>組件</b>實踐

    【HarmonyOS next】ArkUI-X休閑益智連連看【進階】

    鴻蒙和iOS設(shè)備上啟動的瞬間,真正感受到了跨平臺開發(fā)的未來已來。\" 獲取完整源碼 | ArkUI-X文檔中心 通過本實踐可見,ArkUI-X在保持原生性能的前提下,真正實現(xiàn)了\"一
    發(fā)表于 06-28 21:51

    【HarmonyOS next】ArkUI-X新聞熱搜聚合App【進階】

    通過ArkUI-X將鴻蒙下的新聞熱搜聚合App轉(zhuǎn)換為iOS 一、項目背景與技術(shù)選型 1.1 項目概述 本案例基于鴻蒙(HarmonyOS)開發(fā)的聚合熱搜熱榜應(yīng)用,通過調(diào)用韓小韓博客提供
    發(fā)表于 06-28 21:43

    HarmonyOS NEXT應(yīng)用元服務(wù)常見列表操作Tabs吸頂場景

    Tabs吸頂場景 場景描述 Tabs嵌套List的吸頂效果,常用于新聞、資訊類應(yīng)用的首頁。 本場景以Tabs頁簽首頁內(nèi)容為例,在首頁TabContent的內(nèi)容區(qū)域使用List組件配合其
    發(fā)表于 06-28 15:07

    ArkUI-X案例解析

    實現(xiàn)的,應(yīng)首先符合ArkUI-X框架的規(guī)格要求. 在應(yīng)用UI方面存在的差異,是無法借助Bridge能力來彌補的。在此建議使用ArkUI-X框架中已經(jīng)適配完畢的組件,這些組件功能相對穩(wěn)定
    發(fā)表于 06-23 22:40

    ArkUI-X跨平臺技術(shù)落地-華為運動健康(一)

    開發(fā)工作量以及保證體驗一致性,對于運動健康A(chǔ)pp而言,顯得尤為重要。作為鴻蒙NEXT系統(tǒng)生態(tài)中的重要一員,ArkUI-X框架是我們跨平臺技術(shù)方案的首選。結(jié)合當(dāng)前運動健康三端現(xiàn)狀,具體采取如下跨平臺技術(shù)
    發(fā)表于 06-18 22:53

    鴻蒙5開發(fā)寶藏案例分享---分析幀率問題

    鴻蒙性能優(yōu)化寶藏:幀率問題實戰(zhàn)案例解析 嘿,各位鴻蒙開發(fā)者! 今天分享一個開發(fā)中的大發(fā)現(xiàn)——鴻蒙官方文檔里藏著一堆超實用的性能優(yōu)化案例!這些
    發(fā)表于 06-12 17:07

    鴻蒙5開發(fā)寶藏案例分享---點擊完成時延分析

    ?** 鴻蒙完成時延優(yōu)化實戰(zhàn)指南:讓你的應(yīng)用絲滑如飛!** 在移動端開發(fā)中, 完成時延就是用戶體驗的生命線 !今天帶你深入鴻蒙完成時延優(yōu)化,揭秘官方文檔中的寶藏技巧,讓你的應(yīng)用告別卡頓,流暢起飛
    發(fā)表于 06-12 17:03

    鴻蒙5開發(fā)寶藏案例分享---三折疊應(yīng)用開發(fā)分享

    ) // 強制16:9 } ?總結(jié) 鴻蒙的三折疊適配方案核心可總結(jié)為: ? 斷點驅(qū)動布局 :sm/md/lg覆蓋所有狀態(tài) ? 組件動態(tài)屬性 :Tabs/WaterFlow/Swiper根據(jù)斷點調(diào)整參數(shù)
    發(fā)表于 06-12 15:47

    Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅

    ArkUI 來編寫的,UI組件由數(shù)據(jù)和UI描述組成,UI更新只能通過修改其綁定的數(shù)據(jù)來實現(xiàn)。渲染層怎樣驅(qū)動聲明式的ArkUI成為了鴻蒙版適配的第一個問題。 初步解決方案:統(tǒng)一Bui
    發(fā)表于 06-04 16:46

    開源啦?。?!基于鴻蒙ArkTS封裝的圖表組件《McCharts》,大家快來一起共創(chuàng)

    的地方請大家高抬貴手,寬容一下,謝謝。 這次主要是給大家?guī)硪粋€重磅消息,就是我自己使用鴻蒙ArkTS語法開發(fā)的圖表組件今日正式開源了。為什么?原因有兩點吧! 鴻蒙是國產(chǎn)的操作系統(tǒng),
    發(fā)表于 03-15 15:21

    Get這個秘籍,鴻蒙原生應(yīng)用頁面滑動絲滑無比

    鴻蒙應(yīng)用開發(fā)中,部分應(yīng)用頁面在滑動時會出現(xiàn)白塊或白屏的問題,不僅困擾開發(fā)者,還直接影響用戶體驗。針對這一痛點,華為近期分別推出了針對鴻蒙原生應(yīng)用A
    發(fā)表于 03-06 14:41

    華為推出RN/H5多設(shè)備自適應(yīng)組件

    在原生鴻蒙應(yīng)用開發(fā)中,華為針對ArkUI框架推出了一整套針對多設(shè)備適配的完善能力(如“一多”能力)以及高階組件(如分欄、邊看邊評等),幫助開發(fā)
    的頭像 發(fā)表于 01-16 14:46 ?1572次閱讀