国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【鴻蒙應用ArkTS開發(fā)系列】- 導航欄Tab組件使用講解

這篇具有很好參考價值的文章主要介紹了【鴻蒙應用ArkTS開發(fā)系列】- 導航欄Tab組件使用講解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

現(xiàn)在市場上的大部分應用,主頁都是才用底部導航欄菜單作為頁面主體框架來展示,
tabs組件僅可包含子組件tabscontent,Harmony,harmonyos,華為,ArkTS,ArkUI
在鴻蒙中是使用Tabs組件實現(xiàn),下面我們開始講解Tab組件的使用。

Tabs介紹

Tabs是一個通過頁簽進行內(nèi)容視圖切換的容器組件,每個頁簽對應一個內(nèi)容視圖,它僅可包含子組件TabContent,同時搭配 TabsController使用。

TabsController 是Tabs組件的控制器,用于控制Tabs組件進行頁簽切換。不支持一個TabsController控制多個Tabs組件。
具體可查看官網(wǎng)介紹,這里就不多描述。

Tabs使用例子

@Entry
@Component
export struct MainPage {
  @State mCurrentPage: number = 0;
  private mTabController: TabsController = new TabsController()

  build() {
    Tabs({ barPosition: BarPosition.End, controller: this.mTabController }) {

      TabContent() {
        Text('第一個頁面')
      }
      .tabBar(this.TabBuilder(0))

      TabContent() {
        Text('第二個頁面')
      }
      .tabBar(this.TabBuilder(1))

      TabContent() {
        Text('第三個頁面')
      }
      .tabBar(this.TabBuilder(2))

    }
    .scrollable(true)
    .vertical(false)
    .barMode(BarMode.Fixed)
    .onChange((index) => {
      this.mCurrentPage = index;
    })

  }

  @Builder TabBuilder(index: number) {
    Column() {
      Image(index == this.mCurrentPage ? $r('app.media.icon_selected'): $r('app.media.icon_normal'))
        .width('24vp')
        .height('24vp')
        .objectFit(ImageFit.Contain)
      Text('菜單')
        .fontSize('10fp')
        .fontWeight(500)
        .fontColor(this.mCurrentPage === index ? $r('app.color.blue_3d9dff') : $r('app.color.gray_999999'))
        .margin({ top: '4vp' })
    }.justifyContent(FlexAlign.Center)
  }
}

這里對上面代碼進行講解,

  1. 首先定義一個Tab容器組件,在其中擺放了三個TabContent子組件;
  2. 使用vertical屬性跟barPosition: BarPosition.End配合即可以將導航欄顯示在頁面底部;
  3. 使用scrollable開啟手勢滑動切換tab頁;
  4. 定義 onChange函數(shù),可以監(jiān)聽tab頁面切換事件,這里我們定義了一個全局變量記錄當前tab顯示子頁索引,通過該值可對底部欄的圖標跟文本進行樣式高亮處理。
  5. 使用@Builder注解定義了一個TabBuilder的布局繪制方法,進行tab底部導航欄的繪制

上面代碼是一個比較粗糙的例子,由于tabBar設(shè)置調(diào)用同一個TabBuilder,因此繪制后,每個底部菜單是一模一樣的效果。

下面我們對其進行修改,讓它支持多個不同菜單繪制

TabBar 樣式設(shè)置

定義菜單樣式對象-NavigationItem

export interface NavigationItem {
  id: number; 
  text: Resource; //文本
  icon_normal: Resource; // 默認圖標
  icon_selected: Resource; // 選中圖標
}

定義一個底部菜單欄集合數(shù)據(jù)-NavigationList

export const NavigationList: NavigationItem[] = [
  {
    icon_normal: $r('app.media.main_icon_home'),
    icon_selected: $r('app.media.main_icon_home'),
    text: $r('app.string.tab_home'),
    id: 0
  },
  {
    icon_normal: $r('app.media.main_icon_life'),
    icon_selected: $r('app.media.main_icon_life'),
    text: $r('app.string.tab_life'),
    id: 1
  },
  {
    icon_normal: $r('app.media.main_icon_user'),
    icon_selected: $r('app.media.main_icon_user'),
    text: $r('app.string.tab_user'),
    id: 2
  },
]

修改TabBuilder

@Builder TabBuilder(item: NavigationItem) {

     Column() {
        Image(this.mCurrentPage === this.getTabIndexByItem(item) ? item.icon_selected : item.icon_normal)
          .width('24vp')
          .height('24vp')
          .objectFit(ImageFit.Contain)

        Text(item.text)
          .fontSize('10fp')
          .fontWeight(500)
          .fontColor(this.mCurrentPage === this.getTabIndexByItem(item) ? $r('app.color_blue_3d9dff') : $r('app.color.gray_999999'))
          .margin({ top: '4vp' })
      }
      .justifyContent(FlexAlign.Center)
      .width('100%')
      .height('100%')
    }
  }

這里是根據(jù)NavigationItem ID動態(tài)找在數(shù)組中的索引。

getTabIndexByItem(navigationItem: NavigationItem): number {
    return this.mTabDataList.findIndex(item => item.id === navigationItem.id);
  }

通過傳入一個NavigationItem,對TabBuilder中的組件樣式進行動態(tài)配置。

Tab 組件控制

如果想要通過代碼去控制tab切換到指定子頁,可以使用 TabController來對tab進行控制,使用changeIndex函數(shù)進行切換。

題外話

本文到此結(jié)束,謝謝閱讀,由于時間匆忙,只能進行簡單講解,一些tab滑動動畫、tabItem的點擊樣式、tabbar分隔線的問題,后續(xù)有時間再進行補充。如有疑問,評論區(qū)溝通探討。文章來源地址http://www.zghlxwxcb.cn/news/detail-795221.html

到了這里,關(guān)于【鴻蒙應用ArkTS開發(fā)系列】- 導航欄Tab組件使用講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(通用屬性:組件標識)

    鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(通用屬性:組件標識)

    id為組件的唯一標識,在整個應用內(nèi)唯一。本模塊提供組件標識相關(guān)接口,可以獲取指定id組件的屬性,也提供向指定id組件發(fā)送事件的功能。 說明: 從API Version 8開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。 名稱 參數(shù)說明 描述 id string 組件

    2024年04月22日
    瀏覽(40)
  • 鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(容器組件:Flex)

    鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(容器組件:Flex)

    以彈性方式布局子組件的容器組件。 說明: 該組件從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。 Flex組件在渲染時存在二次布局過程,因此在對性能有嚴格要求的場景下建議使用Column、Row代替。 Flex組件主軸默認不設(shè)置時撐滿父容

    2024年04月11日
    瀏覽(25)
  • 鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(容器組件:List)

    鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(容器組件:List)

    列表包含一系列相同寬度的列表項。適合連續(xù)、多行呈現(xiàn)同類數(shù)據(jù),例如圖片和文本。 說明: 該組件從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。 該組件內(nèi)容區(qū)小于一屏時,默認沒有回彈效果。需要回彈效果,可以通過edgeEffe

    2024年04月13日
    瀏覽(26)
  • 鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(通用屬性:組件內(nèi)容模糊)

    鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(通用屬性:組件內(nèi)容模糊)

    為當前組件添加內(nèi)容模糊效果。 說明: 從API Version 10開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。 foregroundBlurStyle(value: BlurStyle, options?: ForegroundBlurStyleOptions) 為當前組件提供內(nèi)容模糊能力。 系統(tǒng)能力: ?SystemCapability.ArkUI.ArkUI.Full 參數(shù): 參數(shù)

    2024年03月09日
    瀏覽(24)
  • 鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(容器組件:UIExtensionComponent (系統(tǒng)接口))

    鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(容器組件:UIExtensionComponent (系統(tǒng)接口))

    UIExtensionComponent用于支持在本頁面內(nèi)嵌入其他應用提供的UI。展示的內(nèi)容在另外一個進程中運行,本應用并不參與其中的布局和渲染。 通常用于有進程隔離訴求的模塊化開發(fā)場景。 說明: 該組件從API Version 10開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的

    2024年04月13日
    瀏覽(68)
  • 【鴻蒙應用ArkTS開發(fā)系列】- 選擇圖片、文件和拍照功能實現(xiàn)

    【鴻蒙應用ArkTS開發(fā)系列】- 選擇圖片、文件和拍照功能實現(xiàn)

    在使用App的時候,我們經(jīng)常會在一些社交軟件中聊天時發(fā)一些圖片或者文件之類的多媒體文件,那在鴻蒙原生應用中,我們怎么開發(fā)這樣的功能呢? 本文會給大家對這個功能點進行講解,我們采用的是拉起系統(tǒng)組件來進行圖片、文件的選擇,拉起系統(tǒng)相機進行拍照的這樣一種

    2024年02月04日
    瀏覽(23)
  • 華為鴻蒙應用--底部導航欄Tabs(自適應手機和平板)-ArkTs

    華為鴻蒙應用--底部導航欄Tabs(自適應手機和平板)-ArkTs

    鴻蒙ArkTS Tabs組件開發(fā)底部導航欄,可自適應平板和手機,相當于Android開發(fā)中的MainActivity+Fragment的底部導航欄模式。 一、主頁:MainPage.ets StyleConstants.ets: 二、BreakpointSystem.ets:響應式設(shè)計的核心 三、ButtonInfoModel.ets:底部導航按鈕數(shù)據(jù)?

    2024年01月21日
    瀏覽(22)
  • 鴻蒙4.0開發(fā)筆記之ArkTS語法基礎(chǔ)的UI描述、基礎(chǔ)組件的使用與如何查看組件是否有參數(shù)(八)

    鴻蒙4.0開發(fā)筆記之ArkTS語法基礎(chǔ)的UI描述、基礎(chǔ)組件的使用與如何查看組件是否有參數(shù)(八)

    在HarmonyOS的ArkTS語法中,萬物皆組件。ArkTS以聲明方式組合和擴展組件來描述應用程序的UI,同時還提供了基本的屬性、事件和子組件配置方法,幫助開發(fā)者實現(xiàn)應用交互邏輯。根據(jù)組件構(gòu)造方法的不同,創(chuàng)建組件包含有參數(shù)和無參數(shù)兩種方式。 1、無/有參數(shù)組件 無參數(shù)組件:

    2024年02月03日
    瀏覽(19)
  • 鴻蒙實戰(zhàn):ArkTs 開發(fā)一個鴻蒙應用

    鴻蒙實戰(zhàn):ArkTs 開發(fā)一個鴻蒙應用

    學習過的 ArkTs 知識點,一步一步開發(fā)一個小的鴻蒙應用示例,涉及到 ?ArkTs 語法、注解 @Entry 、 @Component 、 @state 、路由、生命周期、 @Prop 、 @Link 、常用組件的使用等等知識點。 要開發(fā)一個鴻蒙應用,首先我們需要知道 系統(tǒng)是如何找到頁面的啟動入口 。 鴻蒙如何啟動應用

    2024年02月22日
    瀏覽(25)
  • 【鴻蒙軟件開發(fā)】ArkTS常用組件之Button

    【鴻蒙軟件開發(fā)】ArkTS常用組件之Button

    Button是按鈕組件,通常用于響應用戶的點擊操作,其類型包括膠囊按鈕、圓形按鈕、普通按鈕。Button當做為容器使用時可以通過添加子組件實現(xiàn)包含文字、圖片等元素的按鈕。具體用法請參考Button。 Button通過調(diào)用接口來創(chuàng)建,接口調(diào)用有以下兩種形式: 創(chuàng)建不包含子組件的

    2024年02月02日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包