HarmonyOS6 ArkTS Tabs 设置TabBar的布局模式

HarmonyOS6 ArkTS Tabs 设置TabBar的布局模式

文章目录

Tabs与TabBar基础

Tabs组件由TabBar(页签导航栏)和TabContent(对应内容区)两部分组成。TabBar作为导航入口,其布局模式直接影响页面美观与操作流畅度。

核心属性:barMode

  • 作用:定义TabBar的布局规则,控制页签宽度分配与滚动能力
  • 类型BarMode枚举,包含两种核心模式
    • BarMode.Fixed固定均分模式(默认值)
    • BarMode.Scrollable可滚动模式
  • 配置位置Tabs组件的链式调用属性

两种布局模式

1. BarMode.Fixed(固定均分模式)

核心特性
  • 宽度均分:所有TabBar页签自动平均分配TabBar总宽度,每个页签宽度完全一致
  • 不可滚动TabBar区域固定,无法横向滑动,页签数量超出屏幕宽度时会被挤压截断
  • 布局稳定:页签位置固定,适合数量少、内容固定的导航场景
适用场景
  • 应用底部导航栏(通常3-5个固定页签,如首页、分类、我的)
  • 页签数量固定且较少(≤5个),无需动态扩展的场景
  • 要求导航栏布局稳定、无滚动行为的界面
代码配置
Tabs(){// TabContent定义...}.barMode(BarMode.Fixed)// 配置固定均分模式

2. BarMode.Scrollable(可滚动模式)

核心特性
  • 自适应宽度:每个TabBar页签宽度由内容(文字/图标)实际长度决定,非强制均分
  • 支持滚动:当所有页签总宽度超出TabBar容器宽度时,可横向滑动显示隐藏页签
  • 布局灵活:适配大量页签场景,内容展示更完整
适用场景
  • 应用顶部分类导航(如新闻频道、商品分类,页签数量多且不固定)
  • 页签文字长度差异大、需自适应宽度的场景
  • 动态增减页签、内容可扩展的导航界面
代码配置
Tabs(){// TabContent定义...}.barMode(BarMode.Scrollable)// 配置可滚动模式

完整代码

// xxx.ets@Entry@Component struct TabsExample {@State text:string='文本';@State barMode: BarMode = BarMode.Fixed;build(){Column(){// 文本控制按钮Row(){Button('文本增加 ').width('47%').height(50).backgroundColor(Color.Blue).fontColor(Color.White).borderRadius(12).onClick(()=>{this.text +='文本增加';}).margin({ right:'6%', bottom:12})Button('文本重置').width('47%').height(50).backgroundColor(Color.Orange).fontColor(Color.White).borderRadius(12).onClick(()=>{this.text ='文本';}).margin({ bottom:12})}// 模式切换按钮Row(){Button('Fixed固定模式').width('47%').height(50).backgroundColor('#0088ff').fontColor(Color.White).borderRadius(12).onClick(()=>{this.barMode = BarMode.Fixed;}).margin({ right:'6%', bottom:12})Button('Scrollable滚动模式').width('47%').height(50).backgroundColor('#33bb33').fontColor(Color.White).borderRadius(12).onClick(()=>{this.barMode = BarMode.Scrollable;}).margin({ bottom:12})}// 核心 Tabs 组件Tabs(){TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Pink)}.tabBar(`${this.text} 页面1`)TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar(`${this.text} 页面2`)TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Blue)}.tabBar(`${this.text} 页面3`)}.height('60%').backgroundColor(0xf1f3f5).barMode(this.barMode).scrollable(true).animationDuration(300)}.width('100%').height('100%').padding(24)}}

运行效果图:

点击文本增加使文案增多,然后点击滚动模式,文案可以左右滑动:

模式效果对比

效果对比表

对比维度BarMode.FixedBarMode.Scrollable
页签宽度强制均分,宽度一致自适应内容,宽度不一
滚动能力不可滚动,超出挤压可横向滑动,完整展示
文字长度影响文字过长会被截断文字自适应宽度,无挤压
适用页签数量少量(3-5个)大量(≥5个)
布局稳定性高,位置固定中,可滑动调整

总结

Tabs组件的barMode属性是配置TabBar布局的核心,BarMode.Fixed适合固定少标签场景,BarMode.Scrollable适配多标签、动态内容场景。开发中需根据导航位置、页签数量、内容特性选择合适模式,结合样式配置(指示器、文字颜色)优化UI体验,打造符合HarmonyOS设计规范的高质量应用界面。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

Read more

除了 OpenClaw,今天 AI 热榜还有什么值得看?我把 5 个重点方向讲清楚了

除了 OpenClaw,今天 AI 热榜还有什么值得看?我把 5 个重点方向讲清楚了

🔥 个人主页:杨利杰YJlio❄️ 个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》《Python》《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更简单,让重复的工作自动化 除了 OpenClaw,今天 AI 热榜还有什么值得看?我把 5 个重点方向讲清楚了 * 除了 OpenClaw,今天 AI 热榜还有什么值得看?我把 5 个重点方向讲清楚了 * 1. 我先说结论:今天这波 AI 热榜,最重要的不是“谁最火”,而是“风向变了” * 2. GoogleCloudPlatform / generative-ai:平台生态正在成为真正的护城河 * 3. MiroFish:群体智能和多智能体,开始从概念走向更具体的产品叙事

告别复杂配置!Z-Image-Turbo开箱即用的AI绘画体验

告别复杂配置!Z-Image-Turbo开箱即用的AI绘画体验 1. 引言:为什么你需要关注 Z-Image-Turbo? 在当前 AI 图像生成技术飞速发展的背景下,用户对文生图模型的要求已不再局限于“能画出来”,而是追求高质量、高速度、低门槛和强可控性。然而,许多开源模型仍面临部署复杂、显存占用高、推理缓慢等问题,极大限制了普通开发者和创作者的实际使用。 正是在这一背景下,阿里巴巴通义实验室推出的 Z-Image-Turbo 成为一股清流。作为 Z-Image 系列的蒸馏版本,它以仅需 8 步推理即可生成照片级图像 的能力,结合出色的中英文提示理解与消费级显卡友好性(16GB 显存可运行),重新定义了高效文生图的标准。 更关键的是,ZEEKLOG 镜像构建团队推出的 Z-Image-Turbo 开源镜像 实现了真正的“开箱即用”——内置完整模型权重、无需联网下载、集成 WebUI 与 API、支持进程守护,大幅降低了部署成本。本文将带你全面了解该模型的技术优势,

用AIGC生成测试周报:从Jira、Git、CI日志中自动提炼关键指标

用AIGC生成测试周报:从Jira、Git、CI日志中自动提炼关键指标

测试周报自动化转型的迫切性‌ 每周一,对于许多测试工程师而言,可能都是从整理上周的“数据残骸”开始:打开不同的浏览器标签页,登录Jira查看新增缺陷和待关闭的BUG,翻阅Git提交记录寻找与测试关联的代码变更,再到CI/CD平台(如Jenkins、GitLab CI)的日志海洋中,搜寻失败的构建和测试用例执行报告。这个过程耗时耗力,且容易出错。更重要的是,这种碎片化的数据罗列,难以直观呈现测试工作的核心价值与项目风险的动态变化。 AIGC的引入,为破解这一困境提供了全新范式。它并非简单地“复制粘贴”数据,而是通过自然语言处理(NLP)、数据挖掘与智能分析,理解数据背后的上下文,自动汇总、关联、解读并生成一份内容丰富、重点突出、具备可读性和行动指引的测试周报。 核心:构建自动化数据管道与指标提炼模型‌ 一个有效的AIGC测试周报生成系统的核心在于‌数据源整合‌与‌智能指标提炼‌。 1. 数据源的接入与结构化‌ 首先,需要建立与三个核心系统的自动化数据连接: Jira连接‌:通过Jira REST API,定期拉取指定项目、

AIGC视频生成成本优化实战:文字+图片输入下20秒与30秒视频的模型选型与价格对比

快速体验 在开始今天关于 AIGC视频生成成本优化实战:文字+图片输入下20秒与30秒视频的模型选型与价格对比 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 AIGC视频生成成本优化实战:文字+图片输入下20秒与30秒视频的模型选型与价格对比 背景痛点:被浪费的每一秒都在烧钱 最近在做一个短视频自动生成项目时,发现一个扎心现象:用AIGC生成的30秒视频,实际有效内容往往只有20秒左右。多出来的10秒黑屏或重复画面,不仅让用户观感下降,