鸿蒙开发—黑马云音乐之首页导航栏

目录

1.底部导航

2.点击导航栏的时候点亮

3.新建tabbar对应的页面并加载


想要图片资源私信我,被强制改为VIP资源了,改不了开放权限也删不了,难评。

1.底部导航

@Entry
@Component
struct Index {
  @State message: string = '首页'

  @Builder
  tabBuilder(text:string,img:Resource) {


    //   未选中状态样式处理
    Column({ space: 5 }) {
      Image(img)
        .width(25)
        .borderRadius(25)
        .padding(2)
        .fillColor('#4bb0c4')

      Text(text)
        .fontColor('#4bb0c4')
    }

  }

  build() {
    Column() {
      //  播放歌曲信息后面完成
      //  底部导航栏
      Tabs({ barPosition: BarPosition.End }) {
        TabContent() {
          Text('推荐')
        }
        .tabBar(this.tabBuilder('推荐',$r('app.media.ic_recommend')))
        .backgroundColor(Color.Black)

        TabContent() {
          Text('发现')
        }
        .tabBar(this.tabBuilder('发现',$r('app.media.ic_find')))
        .backgroundColor(Color.Black)
      }
      .backgroundColor('#ff3b3b3b')
    }
    .height('100%')
    .backgroundColor(Color.Black)
  }
}

自定义tabBuilder,使用Tabs组件实现,属性自行调整。

2.点击导航栏的时候点亮

@Entry
@Component
struct Index {
  @State currentIndex:number = 0 //页面加载的时候就应该把第一个tab点亮

  @Builder
  tabBuilder(text:string,img:Resource,index:number) {

    // 三元表达式
    // 条件成立?取值1:取值2
    Column({ space: 5 }) {
      Image(img)
        .width(25)
        .borderRadius(25)
        .backgroundColor(this.currentIndex == index?'#d2577c':'')
        .padding(2)
        .fillColor(this.currentIndex == index?Color.White:'#4bb0c4')

      Text(text)
        .fontColor(this.currentIndex == index?'#d2577c':'#4bb0c4')
    }
  }

  build() {
    Column() {
      //  播放歌曲信息后面完成
      //  底部导航栏
      Tabs({ barPosition: BarPosition.End }) {
        TabContent() {
          Text('推荐')
        }
        .tabBar(this.tabBuilder('推荐',$r('app.media.ic_recommend'),0))
        .backgroundColor(Color.Black)

        TabContent() {
          Text('发现')
        }
        .tabBar(this.tabBuilder('发现',$r('app.media.ic_find'),1))
        .backgroundColor(Color.Black)
      }
      .onChange((index:number)=>{
        console.log('当前索引',index)
        this.currentIndex = index
      })
      .backgroundColor('#ff3b3b3b')
    }
    .height('100%')
    .backgroundColor(Color.Black)
  }
}

3.新建tabbar对应的页面并加载

新建4个页面。之后才能在TabContent内调用页面。

import { FindPage } from './FindPage'
import { MimePage } from './mimePage'
import { MomentPage } from './momentPage'
import { MuiscPage } from './muiscPage'
import { RecommendPage } from './recommendPage'
@Entry
@Component
struct Index {
  @State currentIndex:number = 0 //页面加载的时候就应该把第一个tab点亮

  @Builder
  tabBuilder(text:string,img:Resource,index:number) {

    // 三元表达式
    // 条件成立?取值1:取值2
    Column({ space: 5 }) {
      Image(img)
        .width(25)
        .borderRadius(25)
        .backgroundColor(this.currentIndex == index?'#d2577c':'')
        .padding(2)
        .fillColor(this.currentIndex == index?Color.White:'#4bb0c4')

      Text(text)
        .fontColor(this.currentIndex == index?'#d2577c':'#4bb0c4')
    }
  }

  build() {
    Column() {
      //  播放歌曲信息后面完成
      //  底部导航栏
      Tabs({ barPosition: BarPosition.End }) {
        TabContent() {
          RecommendPage()
        }
        .tabBar(this.tabBuilder('推荐',$r('app.media.ic_recommend'),0))
        .backgroundColor(Color.Black)

        TabContent() {
          FindPage()
        }
        .tabBar(this.tabBuilder('发现',$r('app.media.ic_find'),1))
        .backgroundColor(Color.Black)

        TabContent() {
          MuiscPage()
        }
        .tabBar(this.tabBuilder('muisc',$r('app.media.ic_logo'),2))
        .backgroundColor(Color.Black)

        TabContent() {
          MomentPage()
        }
        .tabBar(this.tabBuilder('动态',$r('app.media.ic_moment'),3))
        .backgroundColor(Color.Black)

        TabContent() {
          MinePage()
        }
        .tabBar(this.tabBuilder('我的',$r('app.media.ic_mine'),4))
        .backgroundColor(Color.Black)
      }
      .onChange((index:number)=>{
        console.log('当前索引',index)
        this.currentIndex = index
      })
      .backgroundColor('#ff3b3b3b')
    }
    .height('100%')
    .backgroundColor(Color.Black)
  }
}

与List内只能使用ListItem类似,Tabs内只能使用TabContent。

设置参数currentIndex类型为number,初始为0,设置属性.onChange((index:number)=>{
this.currentIndex = index }),当点击某一TabContent时,将index赋值currentIndex,image设置三元判断表达式,判断背景颜色是否该变色。

.backgroundColor(this.currentIndex == index?'#d2577c':'')
.fillColor(this.currentIndex == index?Color.White:'#4bb0c4')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmoothSailingT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值