这段时间比较热门的莫过于华为推出的自主研发的面向全场景分布式操作系统HarmonyOS

https://developer.huawei.com/

最新一直潜心学习鸿蒙os开发,于是基于HarmonyOS NEXT 5.0 API12 Release开发了一款自定义多功能导航条组件。

HMNavBar组件支持自定义返回键、标题/副标题、标题居中、背景色/背景图片/背景渐变色、标题颜色、搜索、右侧操作区等功能。

如下图:组件结构非常简单。

组件参数配置

@Component
export struct HMNavBar {
// 是否隐藏左侧的返回键
@Prop hideBackButton: boolean
// 标题(支持字符串|自定义组件)
@BuilderParam title: ResourceStr | CustomBuilder = BuilderFunction
// 副标题
@BuilderParam subtitle: ResourceStr | CustomBuilder = BuilderFunction
// 返回键图标
@Prop backButtonIcon: Resource | undefined = $r('sys.symbol.chevron_left')
// 返回键标题
@Prop backButtonTitle: ResourceStr
// 背景色
@Prop bgColor: ResourceColor = $r('sys.color.background_primary')
// 渐变背景色
@Prop bgLinearGradient: LinearGradient
// 图片背景
@Prop bgImage: ResourceStr | PixelMap
// 标题颜色
@Prop fontColor: ResourceColor
// 标题是否居中
@Prop centerTitle: boolean
// 右侧按钮区域
@BuilderParam actions: Array<ActionMenuItem> | CustomBuilder = BuilderFunction
// 导航条高度
@Prop navbarHeight: number = 56 // ...
}

调用方式非常简单易上手。

  • 基础用法
HMNavBar({
backButtonIcon: $r('sys.symbol.arrow_left'),
title: '鸿蒙自定义导航栏',
subtitle: 'HarmonyOS Next 5.0自定义导航栏',
})
  • 自定义返回图标/文字、标题、背景色、右键操作按钮

@Builder customImgTitle() {
Image('https://developer.huawei.com/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/logo-developer-header.svg').height(24).objectFit(ImageFit.Contain)
} HMNavBar({
backButtonIcon: $r('sys.symbol.chevron_left'),
backButtonTitle: '返回',
title: this.customImgTitle,
subtitle: '鸿蒙5.0 api 12',
centerTitle: true,
bgColor: '#f3f6f9',
fontColor: '#0a59f7',
actions: [
{
icon: $r('app.media.app_icon'),
action: () => promptAction.showToast({ message: "show toast index 1" })
},
{
// icon: $r('sys.symbol.plus'),
label: '更多>',
color: '#bd43ff',
action: () => promptAction.showToast({ message: "show toast index 2" })
}
]
})
// 自定义渐变背景、背景图片、右侧操作区
HMNavBar({
hideBackButton: true,
title: 'HarmonyOS',
subtitle: 'harmonyos next 5.0 api 12',
bgLinearGradient: {
angle: 135,
colors: [['#42d392 ',0.2], ['#647eff',1]]
},
// bgImage: 'pages/assets/nav_bg.png',
// bgImage: 'https://developer.huawei.com/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/1025-pc-banner.jpeg',
fontColor: '#fff',
actions: [
{
icon: 'https://developer.huawei.com/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/yuanfuwuicon.png',
action: () => promptAction.showToast({ message: "show toast index 1" })
},
{
icon: 'https://developer.huawei.com/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/0620logo4.png',
action: () => promptAction.showToast({ message: "show toast index 2" })
},
{
icon: $r('sys.symbol.person_crop_circle_fill_1'),
action: () => promptAction.showToast({ message: "show toast index 3" })
}
],
navbarHeight: 70
})

如上图:还支持自定义导航搜索功能。

HMNavBar({
title: this.customSearchTitle1,
actions: this.customSearchAction
}) HMNavBar({
hideBackButton: true,
title: this.customSearchTitle2,
bgColor: '#0051ff',
}) HMNavBar({
backButtonIcon: $r('sys.symbol.arrow_left'),
backButtonTitle: '鸿蒙',
title: this.customSearchTitle3,
bgColor: '#c543fd',
fontColor: '#fff',
actions: [
{
icon: $r('sys.symbol.mic_fill'),
action: () => promptAction.showToast({ ... })
}
]
})

HMNavBar导航组件布局结构如下。

build() {
Flex() {
// 左侧模块
Stack({ alignContent: Alignment.Start }) {
Flex(){
if(!this.hideBackButton) {
this.backBuilder()
}
if(!this.centerTitle) {
this.contentBuilder()
}
}
.height('100%')
}
.height('100%')
.layoutWeight(1) // 中间模块
if(this.centerTitle) {
Stack() {
this.contentBuilder()
}
.height('100%')
.layoutWeight(1)
} // 右键操作模块
Stack({ alignContent: Alignment.End }) {
this.actionBuilder()
}
.padding({ right: 16 })
.height('100%')
.layoutWeight(this.centerTitle ? 1 : 0)
}
.backgroundColor(this.bgColor)
.linearGradient(this.bgLinearGradient)
.backgroundImage(this.bgImage, ImageRepeat.NoRepeat).backgroundImageSize(ImageSize.FILL)
.height(this.navbarHeight)
.width('100%')
}

支持悬浮在背景图上面。

最后,附上几个最新研发的跨平台实例项目。

Tauri2.0+Vite5聊天室|vue3+tauri2+element-plus仿微信|tauri聊天应用

tauri2.0-admin桌面端后台系统|tauri2+vite5+element-plus管理后台EXE程序

Electron32-ViteOS桌面版os系统|vue3+electron+arco客户端OS管理模板

Vite5+Electron聊天室|electron31跨平台仿微信EXE客户端|vue3聊天程序

Ok,今天的分享就到这里,希望以上的分享对大家有所帮助!

基于HarmonyOS NEXT 5.0自定义增强版导航栏组件|鸿蒙ArkUI自定义标题栏的更多相关文章

  1. 微信小程序自定义底部导航栏组件+跳转

    微信小程序本来封装有底部导航栏,但对于想自定义样式和方法的开发者来说,这并不是很好. 参考链接:https://github.com/ljybill/miniprogram-utils/tree/ma ...

  2. 微信小程序自定义导航栏组件,完美适配所有手机,可实现各种功能和情况

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS 手机对于页面 title 的展示不一致,安卓 title 的显示不居中 页面的 title 只支持纯文本级别的样式控 ...

  3. 微信小程序自定义导航栏组件

    1.首先,要在json文件中设置为自定义的形式 "navigationStyle": "custom" 2.计算相关值 导航栏分为状态栏和标题栏,只要能算出每台 ...

  4. iOS:自定义工具栏、导航栏、标签栏

    工具栏为UIToolBar,导航栏UINavigationBar,标签栏UITabBar.它们的样式基本上时差不多的,唯一的一点区别就是,工具栏一般需要自己去创建,然后添加到视图中,而导航栏和标签栏不 ...

  5. Apache Pulsar 2.6.1 版本正式发布:2.6.0 功能增强版,新增 OAuth2 支持

    在 Apache Pulsar 2.6.0 版本发布后的 2 个月,2020 年 8 月 21 日,Apache Pulsar 2.6.1 版本正式发布! Apache Pulsar 2.6.1 修复 ...

  6. 更改系统相机UIImagePickerController导航栏的cancle为自定义按钮

    有时候需要对系统相册里面的取消按钮进行自定义,并获取点击事件做一些操作,那么你可以这样做. 第一:实现navigationController代理 - (void)navigationControll ...

  7. iview修改tabbar实现小程序自定义中间圆形导航栏及多页面登录功能

    emmm,用iview改了个自定义中间圆形的tabbar. 如下图所示, 重点,什么鬼是“多页面登录”? 例如:我现在要做一个功能,要说自己长得帅才能进去页面. 一个两个页面还好,但是我现在要每个页面 ...

  8. 解决ios7.0 以后自己定义导航栏左边button靠右的问题

    1.自己定义button //左button UIButton *leftBtn = [[UIButton , , , )]; [leftBtn addTarget:self action:@sele ...

  9. 自定义iOS7导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  10. 【转】自定义iOS7导航栏背景,标题和返回按钮文字颜色 -- 不错不错!!

    原文网址:http://blog.csdn.net/mad1989/article/details/41516743 在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更 ...

随机推荐

  1. Apache DolphinScheduler如何开启开机自启动功能?

    转载自东华果汁哥 Apache DolphinScheduler 是一个分布式.去中心化的大数据工作流调度系统,支持大数据任务调度.若要设置 DolphinScheduler 开机自启动,通常需要将其 ...

  2. 你还在手动操作仓库?这款 CLI 工具让你效率飙升300%!

    前言 作为一名开发者,我经常会在 GitHub 和 Gitee 上 fork 各种项目.时间一长,这些仓库就会堆积如山,变成了"垃圾仓库".每次打开代码托管平台,看到那些不再需要的 ...

  3. 一款运行于windows上的linux命令神器-Cmder(已经爱不释手)

    一.前言 很多工程师都习惯了使用linux下一些命令,再去用Windows的 cmd 简直难以忍受. 要在windows上运行linux命令,目前比较流行的方式由: GunWin32.Cygwin.W ...

  4. WPF:静态、动态资源以及资源词典

    WPF:静态.动态资源以及资源词典 静态资源与动态资源 我们常常会使用样式或者控件模板放在Window.Resources中,比如这样: 静态资源与动态资源使用如下: <Window.Resou ...

  5. 预设型 DP

    预设型 DP <美好的一天>--青春学概论 한 잔 술에 취해 잠긴 목엔 沉醉于一杯酒 갈라지는 목소린 다시 带着沙哑的嗓音 두 잔 자기 전엔 기분 좋음 入睡前饮下第二杯让心情愉悦 ...

  6. 【Python】之pip安装第三方库失败

    一直报错:Could not fetch URL https://pypi.org/simple/pygame/: There was a problem confirming the ssl cer ...

  7. 【漏洞分析】OSN 代币攻击事件:一笔资金伪造多个分红大户

    背景 OSN 是一种 fee on transfer 代币,会根据用户分红账户的余额对用户发放分红.攻击者利用漏洞增发分红账户的余额,随后触发分红机制完成获利. OSN:https://bscscan ...

  8. [Udemy] AWS Certified Data Analytics Specialty - 5.Visualization

    QuickSight SPICE是 QuickSight 的加速技术

  9. k8s 中的 Service 简介【k8s 系列之二】

    〇.前言 k8s 集群中的每一个 Pod 都有自己的 IP 地址,那么是不是有 IP 了,访问起来就简单了呢,其实不然. 因为在 k8s 中 Pod 不是持久性的,摧毁重建将获得新的 IP,客户端通过 ...

  10. Let's Encrypt Free SSL – Certify The Web

    介绍 随着 Let's Encrypt 的普及. 现在为网站升级到 HTTPS 已经不需要付费了. Let's Encrypt 的 SSL 是免费的, 每 3 个月需要更新一次. 可以完全用 API ...