当前位置: 首页 > news >正文

Harmony Next -- 通用标题栏:高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左中右均可自定义视图。

hm_common_title_bar

OpenHarmony三方库中心仓:https://ohpm.openharmony.cn/#/cn/detail/common_title_bar

介绍

一款通用标题栏,支持高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左中右均可自定义视图。

软件架构

Harmony next版本,兼容API12

效果图

在这里插入图片描述

安装教程
  1. ohpm install common_title_bar
使用说明
  1. 引入仓库
  2. 设置全局属性:状态栏高度、是否全面屏、标题栏高度、标题栏颜色等(可忽略,使用默认配置)

基础使用:

import { CommonTitleBar, TitleType } from '@ohos/commonTitleBar'
import { promptAction } from '@kit.ArkUI';@Component
export struct TitlePage {/*** rightType: TitleType.IMAGE时,设置了rightMorePopupData: this.rightMorePopup* 则会显示气泡菜单弹窗:如微信扫一扫弹窗*/@State rightMorePopup: MenuItemOptions[] = [{startIcon: $r('app.media.ic_edit'),content: "编辑资料",}, {startIcon: $r('app.media.ic_download'),content: "上传信息",}, {startIcon: $r('app.media.ic_upload'),content: "下载信息",}, {startIcon: $r('app.media.ic_scan'),content: "扫一扫",}]/*** 左侧自定义视图*/@BuilderleftBuilder() {Row() {Image($r('app.media.ic_arrow_left')).height(20)Text('返回').onClick(() => {promptAction.showToast({message: "点击了左侧自定义视图",duration: 1500,})})}}/*** 右侧自定义视图*/@BuilderrightBuilder() {Row() {Text('更多').onClick(() => {promptAction.showToast({message: "点击了右侧自定义视图",duration: 1500,})})Image($r('app.media.ic_more')).height(20)}}/*** 居中自定义视图*/@BuildercenterBuilder() {Row() {Image($r('app.media.ic_arrow_left')).height(20)Text('居中').onClick(() => {promptAction.showToast({message: "点击了居中自定义视图",duration: 1500,})})Image($r('app.media.ic_more')).height(20)}}build() {NavDestination() {Scroll() {Column() {CommonTitleBar({leftType: TitleType.NONE,centerType: TitleType.TEXT,centerText: "通用标题栏",})CommonTitleBar({isFullScreen: false,leftType: TitleType.TEXT,leftText: "返回",centerType: TitleType.TEXT,centerText: "非全面屏+左右文字",rightType: TitleType.TEXT,rightText: "更多",})/*** 左侧返回,右侧更多+气泡菜单*/CommonTitleBar({isFullScreen: false,centerType: TitleType.TEXT,centerText: "左侧返回+右侧更多",rightType: TitleType.IMAGE,rightMorePopupData: this.rightMorePopup,rightOnClick: (menu, index) => {promptAction.showToast({message: menu?.content + '---' + index,duration: 1500,})}})CommonTitleBar({isFullScreen: false,centerType: TitleType.TEXT,centerText: "自定义点击事件",centerOnClick: (): void => {promptAction.showToast({message: "居中自定义事件",duration: 1500,})},leftOnClick: () => {promptAction.showToast({message: "左侧自定义事件",duration: 1500,})},rightType: TitleType.TEXT,rightText: "更多",rightOnClick: () => {promptAction.showToast({message: "右侧自定义事件",duration: 1500,})}})/*** 自定义视图*/CommonTitleBar({isFullScreen: false,leftType: TitleType.CUSTOM,leftCustomView: this.leftBuilder,centerType: TitleType.CUSTOM,centerCustomView: this.centerBuilder,rightType: TitleType.CUSTOM,rightCustomView: this.rightBuilder})/*** 跑马灯效果*/CommonTitleBar({isFullScreen: false,leftWidth: 80,leftType: TitleType.TEXT,leftText: "超长文本时开启跑马灯效果",centerWidth: 150,centerText: "超长文本时开启跑马灯效果,超长文本时开启跑马灯效果,超长文本时开启跑马灯效果",rightWidth: 80,rightType: TitleType.TEXT,rightText: "超长文本时开启跑马灯效果",rightTextOverflow: TextOverflow.Ellipsis})/*** 中间搜索框*/CommonTitleBar({isFullScreen: false,leftType: TitleType.NONE,centerType: TitleType.SEARCH,searchValue: "关键字",searchPlaceholder: "请输入产品名称",searchButtonText: "搜索",searchButtonOptions: {fontSize: 14,fontColor: Color.Red},onChangeSearch: (value) => {console.log("Search:" + value)},onSubmitSearch: (value) => {promptAction.showToast({message: value,duration: 1500,})}})/*** 中间搜索框 + 左侧返回 + 右侧更多*/CommonTitleBar({isFullScreen: false,rightType: TitleType.IMAGE,rightMorePopupData: this.rightMorePopup,rightOnClick: (menu, index) => {promptAction.showToast({message: menu?.content + '---' + index,duration: 1500,})},centerLeftPadding: 50,centerRightPadding: 50,centerType: TitleType.SEARCH,searchPlaceholder: "请输入产品名称",searchButtonText: "搜索",searchButtonOptions: {fontSize: 14,fontColor: Color.Red},onChangeSearch: (value) => {console.log("Search:" + value)},onSubmitSearch: (value) => {promptAction.showToast({message: value,duration: 1500,})}})/*** 基础属性设置*/CommonTitleBar({centerText: "基础属性设置",isFullScreen: true,statusBarHeight: 50,statusBarColor: Color.Blue,titleBarHeight: 56,titleBarColor: Color.Green,showBottomLine: true,bottomLineColor: Color.Red,bottomLineSize: 5,})}}}.hideTitleBar(true)}
}

视图类型:

export enum TitleType {NONE = 'none', // 空白TEXT = 'text', // 文字IMAGE = 'image', // 图标CUSTOM = 'custom', // 自定义SEARCH = 'search', // 居中搜索框
}

左侧返回方式:

/*** 返回方式* 使用POP、POP_TO_NAME、POP_TO_INDEX、CLEAR,需要在MainPage主页面设置:@Provide('appPathStack') appPathStack: NavPathStack = new NavPathStack();* MainPage为其他使用CommonTitleBar子组件的主组件* 如果使用以下方式,自定义左侧图图标点击事件(onClickLeftImage)即可*/
export enum BackType {NONE = 'none', // 无点击事件ROUTER = 'router', // router.back() 返回到上一页POP = 'pop', // NavPathStack.pop() 返回到上一页;默认方式POP_TO_NAME = 'popToName', // NavPathStack.popToName("name") 返回到上一个name页面POP_TO_INDEX = 'popToIndex', // NavPathStack.popToIndex(1) 返回到索引为1的页面CLEAR = 'clear', // NavPathStack.clear() 返回到根首页(清除栈中所有页面)
}

CommonTitleBar属性介绍:

属性默认值说明
主体设置
isFullScreenboolean:true是否是全面沉浸是屏
statusBarHeightLength:36状态栏高度(全面沉浸式屏生效)
titleBarHeightLength:56标题栏高度
titleBarColorResourceColor:‘#f5f5f5’标题栏颜色
statusBarColorResourceColor:‘#f5f5f5’状态栏颜色 默认 等于标题栏颜色
showBottomLineboolean:true是否显示标题栏底部的分割线
bottomLineSizeLength:1标题栏底部的分割线的宽度
bottomLineColorResourceColor:“#DDDDDD”标题栏分割线颜色
左侧设置
leftTypestring:TitleType.IMAGE左侧视图类型,默认显示返回按钮
leftWidthLength:-1左侧视图宽度,不设置则自适应内容
leftLeftPaddingLength:15左侧视图左内间距
leftRightPaddingLength:5左侧视图右内间距
leftTextResourceStr:‘Left’左侧文字leftType = text 有效
leftTextColorResourceColor:“#000000”左侧文字颜色
leftTextSizeLength:16左侧文字大小
leftTextOverflowTextOverflow:TextOverflow.MARQUEE左侧文本,超长时的显示方式,默认跑马灯效果;
leftImageResourceResourceStrPixelMap:返回图标
leftImageWidthLength:26左侧图标宽度
leftImageHeightLength:26左侧图标高度
leftImagePaddingLength:5左侧图标padding值:图标尺寸16,内间距各5,保证点击范围
onClickTypeLeftImagestring:BackType.POP返回方法,不设置leftOnClick的情况下生效
leftPopToNamestring:‘’BackType.POP_TO_NAME下生效:NavPathStack.popToName(“name”) 方式的页面名称
leftPopToIndexnumber:0BackType.POP_TO_INDEX下生效:NavPathStack.popToIndex(1) 返回到索引为1的页面
leftCustomView@Builder:左侧自定义视图
leftOnClick() => void左侧点击事件
右侧设置
rightTypestring:TitleType.NONE右侧视图类型,默认无视图
rightWidthLength:-1右侧宽度,不设置则自适应内容
rightLeftPaddingLength:5右侧视图左内间距
rightRightPaddingLength:15右侧视图右内间距
rightTextResourceStr:‘Right’右侧文字leftType = text 有效
rightTextColorResourceColor:“#000000”右侧文字颜色
rightTextSizeLength:16右侧文字大小
rightTextOverflowTextOverflow:TextOverflow.MARQUEE右侧文本,超长时的显示方式,默认跑马灯效果
rightImageResourceResourceStrPixelMap:更多图标
rightMorePopupView@Builder:更多-气泡菜单如果默认使用更多图标,可默认展示气泡菜单
rightMorePopupDataMenuItemOptions[]:[]气泡菜单数据列表
rightImageWidthLength:26右侧图标宽度
rightImageHeightLength:26右侧图标高度
rightImagePaddingLength:5右侧图标padding值:图标尺寸16,内间距各5,保证点击范围
rightCustomView@Builder:右侧自定义视图
rightOnClick(item?: MenuItemOptions, index?: number) => void右侧点击事件
居中设置
centerTypestring:TitleType.TEXT居中视图类型,默认文字视图
centerWidthLength:-1居中宽度,不设置则自适应内容
centerTextResourceStr:‘Center’居中文字leftType= text 有效
centerTextColorResourceColor:“#000000”居中文字颜色
centerTextSizeLength:16居中文字大小
centerTextOverflowTextOverflow: TextOverflow.MARQUEE居中文本,超长时的显示方式,默认跑马灯效果
centerOnClick() => void居中文字点击事件
centerImageResourceResourceStrPixelMap:无
centerImageWidthLength:26居中图标宽度
centerImageHeightLength:26居中图标高度
centerImagePaddingLength:5居中图标padding值:图标尺寸16,内间距各5,保证点击范围
centerCustomView@Builder:无居中自定义视图
searchValuestring:‘’centerType = TitleType.SEARCH生效:居中搜索框文本
searchPlaceholderResourceStr:‘请输入关键字’居中搜索框提示文本
searchButtonTextstring:‘搜索’设置搜索框末尾搜索按钮文本
searchButtonOptionsSearchButtonOptions:无设置搜索框末尾搜索按钮文本样式
onSubmitSearch(value: string) => void点击搜索图标、搜索按钮或者按下软键盘搜索按钮时触发该回调
onChangeSearch(value: string) => void输入内容发生变化时,触发该回调
centerLeftPaddingLength:30居中视图左内间距
centerRightPaddingLenght:30居中视图右间距

CommonTitleBar全局属性设置:统一设置,整个项目均可生效,一般位于EntryAbility.ets中设置:

/*** 设置通用标题栏的全局属性* 主体设置*/AppStorage.setOrCreate<boolean>(TitleGlobalAttribute.IS_FULL_SCREEN, true); // 全局设置是否是全面屏AppStorage.setOrCreate<number>(TitleGlobalAttribute.STATUS_BAR_HEIGHT, px2vp(area.topRect.height)); // 全局设置状态栏高度AppStorage.setOrCreate<number>(TitleGlobalAttribute.TITLE_BAR_HEIGHT, 56); // 全局设置标题栏高度AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.TITLE_BAR_COLOR, "#f5f5f5"); // 全局设置标题栏颜色AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.STATUS_BAR_COLOR, "#f5f5f5"); // 全局设置状态栏颜色AppStorage.setOrCreate<boolean>(TitleGlobalAttribute.SHOW_BOTTOM_LINE, true); // 全局设置是否显示标题栏底部的分割线AppStorage.setOrCreate<Length>(TitleGlobalAttribute.BOTTOM_LINE_SIZE, 1); // 全局设置标题栏底部的分割线的宽度AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.BOTTOM_LINE_COLOR, "#DDDDDD"); // 全局设置标题栏分割线颜色/*** 左侧设置*/AppStorage.setOrCreate<string>(TitleGlobalAttribute.LEFT_TYPE, TitleType.IMAGE); // 全局设置左侧视图类型AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_LEFT_PADDING, 15); // 全局设置左侧视图左内间距AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_RIGHT_PADDING, 5); // 全局设置左侧视图右内间距AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.LEFT_TEXT_COLOR, "#000000"); // 全局设置左侧文字颜色AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_TEXT_SIZE, 16); // 全局设置左侧文字大小AppStorage.setOrCreate<ResourceStr | PixelMap>(TitleGlobalAttribute.LEFT_IMAGE_RESOURCE,$r('app.media.ic_arrow_left')); // 全局设置左侧图标AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_IMAGE_WIDTH, 26); // 全局设置左侧图标宽度AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_IMAGE_HEIGHT, 26); // 全局设置左侧图标高度AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_IMAGE_PADDING, 5); // 全局设置左侧图标padding/*** 右侧设置*/AppStorage.setOrCreate<string>(TitleGlobalAttribute.RIGHT_TYPE, TitleType.NONE); // 全局设置右侧视图类型AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_LEFT_PADDING, 5); // 全局设置右侧视图左内间距AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_RIGHT_PADDING, 15); // 全局设置右侧视图右内间距AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.RIGHT_TEXT_COLOR, "#000000"); // 全局设置右侧文字颜色AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_TEXT_SIZE, 16); // 全局设置右侧文字大小AppStorage.setOrCreate<ResourceStr | PixelMap>(TitleGlobalAttribute.RIGHT_IMAGE_RESOURCE,$r('app.media.ic_more')); // 全局设置左侧图标AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_IMAGE_WIDTH, 26); //  全局设置右侧图标宽度AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_IMAGE_HEIGHT, 26); // 全局设置右侧图标高度AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_IMAGE_PADDING, 5); // 全局设置右侧图标padding/*** 居中设置*/AppStorage.setOrCreate<string>(TitleGlobalAttribute.CENTER_TYPE, TitleType.TEXT); // 全局设置居中视图类型AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_LEFT_PADDING, 30); // 全局设置居中视图左内间距AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_RIGHT_PADDING, 30); // 全局设置居中视图右内间距AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.CENTER_TEXT_COLOR, "#000000"); // 全局设置居中文字颜色AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_TEXT_SIZE, 16); // 全局设置居中文字大小AppStorage.setOrCreate<ResourceStr | PixelMap>(TitleGlobalAttribute.CENTER_IMAGE_RESOURCE,''); // 全局设置居中图标AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_IMAGE_WIDTH, 26); //  全局设置居中图标宽度AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_IMAGE_HEIGHT, 26); // 全局设置居中图标高度AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_IMAGE_PADDING, 5); // 全局设置居中图标padding

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 「运费速查神器」精明买家必备!一键查询1688供应商发货费用
  • 白骑士的PyCharm教学基础篇 1.2 PyCharm基本操作
  • VMware三种网络模式---巨细
  • Linux下如何使用GitLab进行团队协作
  • ES6 数值的扩展(十八)
  • 【MySQL】:对库和表的基本操作方法
  • 33.【C语言】实践扫雷游戏
  • WEB安全-SQL注入
  • 鸿蒙语言基础类库:【@system.vibrator (振动)】
  • 【Langchain大语言模型开发教程】记忆
  • electron学习笔记
  • linux之网络子系统-本机发包到本机 实现
  • 1比25万基础电子地图(广东版)
  • 踏进互动科技世界使用Arduino
  • 【测开能力提升-Javascript】JavaScript运算符流程结构
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • echarts的各种常用效果展示
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java8-模拟hadoop
  • jdbc就是这么简单
  • NSTimer学习笔记
  • Python socket服务器端、客户端传送信息
  • tensorflow学习笔记3——MNIST应用篇
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从重复到重用
  • 力扣(LeetCode)56
  • 聊聊flink的TableFactory
  • 深入浅出Node.js
  • 算法-图和图算法
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 用 Swift 编写面向协议的视图
  • const的用法,特别是用在函数前面与后面的区别
  • Java数据解析之JSON
  • 国内开源镜像站点
  • ​ArcGIS Pro 如何批量删除字段
  • # centos7下FFmpeg环境部署记录
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (14)Hive调优——合并小文件
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (LeetCode 49)Anagrams
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (南京观海微电子)——示波器使用介绍
  • (区间dp) (经典例题) 石子合并
  • (一)RocketMQ初步认识
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET 8.0 中有哪些新的变化?
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • :中兴通讯为何成功
  • @SuppressWarnings(unchecked)代码的作用
  • []Telit UC864E 拨号上网
  • [17]JAVAEE-HTTP协议
  • [383] 赎金信 js