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

目录

1.底部导航

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

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


1.底部导航

@Entry
@Component
struct Index {@State message: string = '首页'@BuildertabBuilder(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点亮@BuildertabBuilder(text:string,img:Resource,index:number) {// 三元表达式// 条件成立?取值1:取值2Column({ 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点亮@BuildertabBuilder(text:string,img:Resource,index:number) {// 三元表达式// 条件成立?取值1:取值2Column({ 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')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C++进阶]抽象类

一、抽象类 1.抽象类的概念 在虚函数的后面写上 0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生类才…

unity3d:TabView,UGUI多标签页组件,TreeView树状展开菜单

概述 1.最外层DataForm为空壳编辑数据用。可以有多个DataForm,例如福利DataForm,抽奖DataForm 2.Menu层为左边栏层,每个DataForm可以使用不同样式的MenuForm预制体 3.DataForm中使用ReorderList,可排列配置 4.有定位功能&#xf…

Clickhouse 生产集群部署(Centos 环境)

文章目录 机器环境配置安装 JDK 8安装 zookeeperClickhouse 集群安装rpm 包离线安装修改全局配置zookeeper配置Shard和Replica设置image.png添加macros配置启动 clickhouse启动 10.82.46.135 clickhouse server启动 10.82.46.163 clickhouse server启动 10.82.46.218 clickhous…

《InheriBT行为树》For Unity

InheriBT: Unity Editor中的行为树编辑框架 行为树(Behavior Tree)是一种广泛应用于人工智能(AI)领域的决策模型,特别是在游戏开发中。行为树通过分层结构和节点的组合,实现了复杂行为的简洁表达。然而&am…

CPU350% JVM GC频繁并GC不掉EXCEL导出

背景: 有个Excel导出的需求,测试的时候,只要连续导出大量的数据就会导致FAT机器反请求反应迟钝,甚至卡死,无法恢复。 排查: 1 跳板机跳到机器上,查看 项目 ipd 执行ps -ef | grep 项目名称.j…

虚拟机Ubuntu20.04 利用串口调试机械臂

虚拟机Ubuntu20.04 利用串口调试机械臂 串口库问题 由于机械臂使用的是串口进行驱动控制,在python中相关的串口库为serial和pyserial两个,这里我曾踩过雷同时安装了serial与pyserial两个库,导致报错如下所示: AttributeError: m…

数据结构:(1)线性表

一、基本概念 概念:零个或多个数据元素的有限序列 元素之间是有顺序了。如果存在多个元素,第一个元素无前驱,最后一个没有后继,其他的元素只有一个前驱和一个后继。 当线性表元素的个数n(n>0&am…

使用Spring Boot与Spire.Doc实现Word文档的多样化操作

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 使用Spring Boot与Spire.Doc实现Word文档的多样化操作具有以下优势: 强大的功能组合:Spring Boot提供了快速构建独立和生产级的Spring应用程序的能力,而Spire.Doc则…

OSError: You are trying to access a gated repo.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

『 Linux 』用户态与内核态的转换机制及信号检测时机

文章目录 用户态与内核态进程地址空间操作系统的本质 信号的处理时机 用户态与内核态 进程在执行代码的过程中代码必定涉及用户代码,库函数代码及操作系统内核代码; 以简单的printf()函数为例,该函数必定为先执行用户的代码即知道需要调用printf()函数,再执行库(如libc)中的代码…

Java线程同步与通信:wait(), notify(), notifyAll(), sleep()

Java线程同步与通信:wait(), notify(), notifyAll(), sleep() 1. wait()2. notify()3. notifyAll()4. sleep()4、总结 💖The Begin💖点点关注&…

一文带你读懂TCP

文章目录 1 TCP协议1.1 TCP 基础1.1.1 TCP 特性1.2.2 TCP连接数 1.2 TCP 头1.2.1 TCP 头格式1.2.2 MTU,MSS,分片传输 1.3 TCP 连接三路握手1.4 TCP 断开四次挥手1.5 SYN攻击和防范1.6 重传机制1.6.1 超时重传1.6.2 快速重传1.6.3 SACK 1.7 滑动窗口1.8 流…

Linux基础复习(二)

前言 本文介绍了一下Linux命令行基本操作及网络配置 一、 命令行提示含义 [当前用户主机名 工作目录]$ 若当前用户是root,则最后一个字符为# 否则,最后一个字符为$ 二、常用Linux命令及其解释 修改主机名 一般在创建一台主机后会使用hostname相关命…

在生信分析中大家需要特别注意的事情​

在生信分析中大家需要特别注意的事情 标准的软件使用和数据分析流程 1. 先看我的b站教学视频 2. 先从我的百度网盘把演示数据集下载下来,先把要运行的模块的演示数据集先运行一遍 3. 前两步都做完了,演示数据集也运行成功了,并且知道了软件…

ajax请求成功但不执行success-function回调函数

目录 一、问题分析 二、处理问题 一、问题分析 在测试员工管理系统的登录和注册代码时,登录一切正常,就是注册成功后没有跳转页面,后面发现是success-function回调函数没有正常执行。原因主要是前端和后端交流的数据格式不一致,…

【C++BFS算法 二分查找】2812. 找出最安全路径

本文涉及知识点 CBFS算法 C二分查找 LeetCode2812. 找出最安全路径 给你一个下标从 0 开始、大小为 n x n 的二维矩阵 grid ,其中 (r, c) 表示: 如果 grid[r][c] 1 ,则表示一个存在小偷的单元格 如果 grid[r][c] 0 ,则表示一…

Windows配置AirSim过程(学习过程)

一、概述 因为需要在虚幻引擎当中使用AirSim,在Windows系统上进行操作,根据官方网站的操作过程,进行了配置,这里作为自己配置过程的记录。 二、具体过程 (一)系统版本 操作系统是Windows11,Ai…

昇思MindSpore 应用学习-RNN实现情感分类-CSDN

RNN实现情感分类 AI代码解析 概述 情感分类是自然语言处理中的经典任务,是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型,实现如下的效果: 输入: This film is terrible 正确标签: Negative 预测标签: Negative输入…

HALCON如何创建本地函数

HALCON中有本地函数(.hdev)、外部函数(HDevelop函数文件.hdvp)和库函数(.hdpl) 本地函数(.hdev):创建后仅在当前程序文件中使用; 外部函数(HDevelop函数文件.hdvp):创建后可以在其他程序文件中复用,默认保存在…/ procedures/下…