【每日学点HarmonyOS Next知识】状态栏字体、生命周期、自定义对话框屏幕中间、透明度、tab居中

server/2025/3/18 4:43:44/
1、HarmonyOS 单页面如何控制状态栏字体颜色?

状态栏字体颜色可通过设置statusBarContentColor修改,参考文档如下:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5
参考代码:

import window from '@ohos.window';
@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {Row() {Column() {Text(this.message).align(Alignment.Center).fontSize(50).fontWeight(FontWeight.Bold).fontColor(Color.White)ColumnSplit().height(20)Button() {Text("点我看效果")}.width(100).height(50).onClick(() => {this.message = "我变了"window.getLastWindow(getContext(), (err, data) => {let win: window.Window;if (err.code) {console.error("error code :" + JSON.stringify(err.code))return;}try {win = data;//设置窗口为全屏模式win.setWindowLayoutFullScreen(true);// 设置状态栏win.setWindowSystemBarProperties({// 设置状态栏颜色为其他颜色statusBarColor: '#ffe30520',// 设置状态栏文本颜色为白色statusBarContentColor: '#ffffffff'})console.info('带状态栏沉浸式窗口设置完成')}catch (expextion) {console.error("error cause :" + JSON.stringify(expextion))}})})ColumnSplit().height(20)}.width('100%')}.height('100%').backgroundColor(Color.Green)}
}
2、HarmonyOS 生命周期回调触发?

当程序被上滑删除退出时,当前页面的onpagehide和aboutToDisappear哪个先触发。

根据场景来看,只会触发aboutToDisappear回调,生命周期相关特性可参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/js-framework-lifecycle-V5

在app.js中可以定义如下应用生命周期函数:

属性类型描述触发时机
onCreate() => void应用创建当应用创建时调用。
onShow6+() => void应用处于前台当应用处于前台时触发。
onHide6+() => void应用处于后台当应用处于后台时触发。
onDestroy() => void应用销毁当应用退出时触发。
3、HarmonyOS 自定义的dialog如何显示在屏幕中间?

自定义的时间弹窗或者用户隐私协议弹窗如何显示在屏幕中间
参考demo:

@CustomDialog
struct CustomDialogExample {controller?: CustomDialogControllerprivate selectDate: Date = new Date()build() {Column() {DatePicker({start: new Date('2009-1-1'),end: new Date('2100-12-31'),selected: this.selectDate})}}
}@Entry
@Component
struct Index {@State textValue: string = ''@State inputValue: string = 'click me'dialogController: CustomDialogController | null = new CustomDialogController({builder: CustomDialogExample(),openAnimation: {duration: 1200,curve: Curve.Friction,delay: 500,playMode: PlayMode.Alternate,onFinish: () => {console.info('play end')}},autoCancel: true,alignment: DialogAlignment.Center,gridCount: 4,customStyle: true,backgroundColor: 0xd9ffffff,cornerRadius: 10,})// 在自定义组件即将析构销毁时将dialogControlle置空aboutToDisappear() {this.dialogController = null // 将dialogController置空}build() {Column() {Button(this.inputValue).onClick(() => {if (this.dialogController != null) {this.dialogController.open()}}).backgroundColor(0x317aff)}.width('100%').margin({ top: 5 })}
}
4、HarmonyOS UI组件提供setAlpha的属性吗?

opacity可以设置透明度,请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-opacity-V5

opacity(value: number | Resource)
设置组件的不透明度。
参数:

参数名类型必填说明
valuenumber | Resource元素的不透明度,取值范围为0到1,1表示不透明,0表示完全透明, 达到隐藏组件效果,但是在布局中占位。

默认值:1

说明:

子组件会继承父组件的透明度,并与自身的透明度属性叠加。如:父组件透明度为0.1,子组件设置透明度为0.8,则子组件实际透明度为0.1*0.8=0.08。
示例

该示例主要显示通过opacity设置组件的不透明度。

// xxx.ets
@Entry
@Component
struct OpacityExample {build() {Column({ space: 5 }) {Text('opacity(1)').fontSize(9).width('90%').fontColor(0xCCCCCC)Text().width('90%').height(50).opacity(1).backgroundColor(0xAFEEEE)Text('opacity(0.7)').fontSize(9).width('90%').fontColor(0xCCCCCC)Text().width('90%').height(50).opacity(0.7).backgroundColor(0xAFEEEE)Text('opacity(0.4)').fontSize(9).width('90%').fontColor(0xCCCCCC)Text().width('90%').height(50).opacity(0.4).backgroundColor(0xAFEEEE)Text('opacity(0.1)').fontSize(9).width('90%').fontColor(0xCCCCCC)Text().width('90%').height(50).opacity(0.1).backgroundColor(0xAFEEEE)Text('opacity(0)').fontSize(9).width('90%').fontColor(0xCCCCCC)Text().width('90%').height(50).opacity(0).backgroundColor(0xAFEEEE)}.width('100%').padding({ top: 5 })}
}

在这里插入图片描述

5、HarmonyOS 关于Tabs只能居中的问题?

Tabs是否支持左对齐,右对齐

Tabs组件未提供居左的样式,可以用Flex自定义一个靠左的tabBar组件,在onclick事件中通过修改索引值和Tabs组件的索引联动,实现切换效果

@Entry
@Component
struct Index {private tabsController: TabsController = new TabsController()@State currentIndex: number = 0;@BuilderTabBarBuilder(title: string, targetIndex: number) {Text(title).fontWeight(targetIndex === this.currentIndex ? FontWeight.Bold : FontWeight.Normal).margin({ left: 10, right: 10 }).onClick(() => {this.tabsController.changeIndex(targetIndex)})}build() {Row() {Column() {Flex({ direction: FlexDirection.Row }) {Flex({ direction: FlexDirection.RowReverse }) {this.TabBarBuilder('页签1', 0)this.TabBarBuilder('页签2', 1)this.TabBarBuilder('页签3', 2)}Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) {TabContent() {Text("页签1页面")}TabContent() {Text("页签2页面")}TabContent() {Text("页签3页面")}}.onChange((index: number) => {this.currentIndex = index;})}}}
}

http://www.ppmy.cn/server/175862.html

相关文章

ASP.NET Webform和ASP.NET MVC 后台开发 大概80%常用技术

本文涉及ASP.NET Webform和ASP.NET MVC 后台开发大概80%技术 2019年以前对标 深圳22K左右 广州18K左右 武汉16K左右 那么有人问了2019年以后的呢? 答:吉祥三宝。。。 So 想继续看下文的 得有自己的独立判断能力。 C#.NET高级笔试题 架构 优化 性能提…

C++初阶——类和对象(二)

C初阶——类和对象(二) 本期内容书接上回,继续讨论类和对象相关内容。类和对象属于C初阶部分,主要反映了面向对象编程的三大基本特点之一——封装,在C的学习中占有举足轻重的地位! 一、类对象模型 1.如何…

使用 Python 爬取微店关键词搜索接口(micro.item_search)的完整指南

微店作为国内知名的电商平台,提供了丰富的商品资源和强大的API接口,方便开发者获取商品信息。本文将详细介绍如何使用 Python 编写爬虫程序,通过微店的 micro.item_search 接口爬取商品数据,并确保爬虫行为符合平台规范。 一、环…

DeepSeek结合Mermaid绘图(流程图、时序图、类图、状态图、甘特图、饼图)转载

思维速览: 本文将详细介绍如何利用DeepSeek结合Mermaid语法绘制各类专业图表,帮助你提高工作效率和文档质量。 ▍DeepSeek入门使用请看:deepseek保姆级入门教程(网页端使用 本地客户端部署 使用技巧) DeepSeek官网…

江科大51单片机笔记【17】红外遥控(外部中断)

写在前言 此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识 在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…

【QT笔记---QText】

文章目录 概要1、字体样式设置1.1效果1.2demo1.3常用成员函数 概要 QText基本应用:1、字体样式设计; 1、字体样式设置 1.1效果 1.2demo //若需要设置字体、字体大小、字宽或者斜体状态的话,可以直接初始化时一起设置 // QFont::QFont(cons…

网络空间安全(31)安全巡检

一、定义与目的 定义: 安全巡检是指由专业人员或特定部门负责,对各类设施、设备、环境等进行全面或重点检查,及时发现潜在的安全隐患或问题。 目的: 预防事故发生:通过定期的安全巡检,及时发现并解决潜在的…

Gartner发布中国CIO和安全团队生成式AI指南:制定人工智能安全治理计划的五个阶段

ChatGPT 和大型语言模型是 GenAI 将如何塑造许多业务流程的早期迹象。中国的首席信息官和安全团队必须确保其组织安全合法地构建和使用 GenAI,并探索其对网络安全的影响(积极和消极)。 主要发现 许多中国公司已经开始使用第三方生成式人工智能…