鸿蒙常用UI——底部tab栏、底部导航和badge

2024-01-16  本文已影响0人  Yelena_CYL

最终效果图


bottomtab.png

底部tab栏、底部导航和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是为了方便开发和维护,对鸿蒙UI做了一层简单的封装,并且会陆续进行更新.
2、基于API Version9版本.
3、看到文章觉得还OK麻烦留个赞👍谢谢啦~

上一篇 下一篇

猜你喜欢

热点阅读