首页 > 其他分享 >鸿蒙开发—黑马云音乐之首页导航栏

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

时间:2024-07-28 14:25:06浏览次数:15  
标签:index TabContent 鸿蒙 Color tabBuilder currentIndex backgroundColor 黑马 首页

目录

1.底部导航

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

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


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')

标签:index,TabContent,鸿蒙,Color,tabBuilder,currentIndex,backgroundColor,黑马,首页
From: https://blog.csdn.net/m0_74748236/article/details/140749899

相关文章

  • 鸿蒙UI系统组件10——菜单(Menu)
    果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下面名片,关注公众号。Menu是菜单接口,一般用于鼠标右键弹窗、点击弹窗等。1、创建默认样式的菜单菜单需要调用bindMenu接口来实现。bindMenu响应绑定组件的点击事件,绑定组件后手势点击对应组件后即可弹出。Button('click......
  • 鸿蒙next开发学习:@AnimatableExtend装饰器-自定义可动画属性
    @AnimatableExtend装饰器用于自定义可动画的属性方法,在这个属性方法中修改组件不可动画的属性。在动画执行过程时,通过逐帧回调函数修改不可动画属性值,让不可动画属性也能实现动画效果。也可通过逐帧回调函数每帧修改可动画属性的值,实现逐帧布局的效果。可动画属性:如果一个属......
  • 黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day4
    你好,我是Qiuner.为帮助别人少走弯路和记录自己编程学习过程而写博客这是我的githubhttps://github.com/Qiuner⭐️giteehttps://gitee.com/Qiuner......
  • 鸿蒙Accessibility Kit无障碍服务开发指南(一)
    鸿蒙AccessibilityKit无障碍服务开发指南(一)文章目录鸿蒙AccessibilityKit无障碍服务开发指南(一)前言一、无障碍框架原理二、使用步骤1.继承AccessibilityExtensionAbility2.配置无障碍服务3.开启无障碍服务4.管理无障碍服务上下文前言无障碍模式是指任何人在任......
  • 鸿蒙OS物联网创新应用实训解决方案
    摘要: 随着物联网技术的飞速发展,各种智能设备和传感器正在以前所未有的速度融入我们的日常生活。华为推出的鸿蒙操作系统(HarmonyOS)作为一款面向全场景、多设备、无缝连接的分布式操作系统,为物联网领域带来了全新的机遇与挑战。为了培养具备鸿蒙OS开发能力的物联网人才,唯众......
  • Harmony鸿蒙实战开发-记事本「登录保护」【源码在文末】
    Harmony鸿蒙实战开发-记事本「登录保护」【源码在文末】文章目录Harmony鸿蒙实战开发-记事本「登录保护」【源码在文末】一、运行演示1、注册2、登录3、主页4、编写二、部分代码三、源码运行工具:DevEcoStudio一、运行演示1、注册2、登录3、主页4、编写......
  • 首页高并发案例遇到的问题以及解决办法
    要通过openresty,ngin,MySQL和redis来部署一个项目首先需要安装以上工具安装openrestyyumintsallyum-utilsyum-config-manager--add-repohttps://openresty.org/package/centos/openresty.repo首先执行这两行代码然后就可以执行安装命令yuminstallopenresty-y在安......
  • 鸿蒙4.2安装apk应用软件
    先在电脑安装adb:https://blog.csdn.net/qq_37858386/article/details/119351940在手机上开开发者模式:点击关于手机里的harmonyOS版本号,点个四五次就弹出来了在手机上搜索usb:把usb调试打开:用数据线连接电脑,把usb配置改成以太网:进入cmd,如果没配adb全局变量,就进入adb的目录,使用a......
  • 鸿蒙 HarmonyOS axios封装
    ✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)......
  • 鸿蒙HarmonyOS【应用开发一、鸿蒙简介】
    ✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)......