鴻蒙常用UI——底部tab欄、底部導(dǎo)航和badge

最終效果圖


bottomtab.png

底部tab欄、底部導(dǎo)航和badge全部代碼:

import { BSNav } from '../../../components/BSNav'
import { BSButton, BSText } from '../../../components/BSUI'
@Entry
@Component
struct BottomTabBarPage {
  @State currentIndex: number = 0

  @Builder TabBuilder(index: number, title: string,icon: Resource, activeIcon: Resource) {

    Column() {

      if (index === 2){
        //badge代碼
        Badge({
          count:5,
          position:BadgePosition.RightTop,
          style:{badgeSize:20,badgeColor:'#F33F3F'}
        }){
          Image(this.currentIndex === index ?  activeIcon : icon )
            .width(54)
            .height(24)
            .margin({ bottom: 4 })
            .objectFit(ImageFit.Contain)
            // .backgroundColor(Color.Orange)
        }
      }else {
        Image(this.currentIndex === index ?  activeIcon : icon )
          .width(54)
          .height(24)
          .margin({ bottom: 4 })
          .objectFit(ImageFit.Contain)
          // .backgroundColor(Color.Pink)
      }

      Text(title)
        .fontColor(this.currentIndex === index ? '#F33F3F': '#999999')
        .fontSize(10)
        .fontWeight(500)
        .lineHeight(14)
    }.width('100%')
  }

  build() {
    Column() {
      Tabs({ barPosition: BarPosition.End }) {
        TabContent() {

          BSButton({title:'返回'})
            .height(44)
            .width('50%')
            .onClick(()=>{
              BSNav.back()
            })

        }.tabBar(this.TabBuilder(0,'首頁',$r('app.media.icon_tab_home_default'),$r('app.media.icon_tab_home_selected')))

        TabContent() {
          BSText({title:'分類',fontColor:'#333333',fontSize:15})
        }.tabBar(this.TabBuilder(1,'分類',$r('app.media.icon_tab_item_default'),$r('app.media.icon_tab_item_selected')))

        TabContent() {
          BSText({title:'購物車',fontColor:'#333333',fontSize:15})
        }.tabBar(this.TabBuilder(2,'購物車',$r('app.media.icon_tab_shopping_default'),$r('app.media.icon_tab_shopping_selected')))

        TabContent() {
          BSText({title:'我的',fontColor:'#333333',fontSize:15})


        }.tabBar(this.TabBuilder(3,'我的',$r('app.media.icon_tab_mine_default'),$r('app.media.icon_tab_mine_selected')))
      }
      .scrollable(false)
      .onChange((index: number) => {
        console.info(index.toString())
        this.currentIndex = index
      })
      .width('100%')
      .backgroundColor(0xF1F3F5)
    }
  }
}

ps:
1、BS開頭的API是為了方便開發(fā)和維護(hù),對鴻蒙UI做了一層簡單的封裝,并且會(huì)陸續(xù)進(jìn)行更新.
2、基于API Version9版本.
3、看到文章覺得還OK麻煩留個(gè)贊??謝謝啦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容