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

01 - 大模型推理框架选型入门:Ollama、llama.cpp与vLLM全景对比

01 - 大模型推理框架选型入门:Ollama、llama.cpp与vLLM全景对比 本文是《大模型推理框架深度解析》系列的第一篇,适合刚接触LLM部署的开发者阅读。 写在前面 随着大语言模型(LLM)的广泛应用,如何将模型高效地部署到生产环境成为每个AI工程师必须面对的问题。目前市面上主流的推理框架有Ollama、llama.cpp和vLLM,但它们的技术定位、适用场景差异巨大。 很多开发者在选型时容易陷入误区: * 用Ollama部署高并发API服务,结果吞吐量上不去 * 用vLLM跑边缘设备,发现资源占用过高 * 混淆llama.cpp和vLLM的定位,不知道何时该用哪个 本文将从架构分层视角出发,帮你建立清晰的选型认知。 一、三大框架的技术定位 1.1 三层架构视角 如果把LLM推理技术栈比作一座大厦,三个框架分别位于不同的楼层: ┌─────────────────────────────────────────────────────────────┐ │ 应用层(第3层) │ │ ┌─────────────┐ │ │ │ Ollama │

为什么顶尖AI公司都在用C++做LLaMA-3推理?深度解析底层性能优势

第一章:为什么顶尖AI公司选择C++进行LLaMA-3推理 在大规模语言模型(LLaMA-3)的部署实践中,性能与资源效率是决定服务响应能力的核心因素。尽管Python在AI研究中占据主导地位,但顶尖科技公司如Meta、NVIDIA和Tesla在生产环境中普遍采用C++实现LLaMA-3的推理引擎,以最大化硬件利用率并降低延迟。 极致的运行时性能 C++允许直接控制内存布局与CPU指令调度,这对于处理LLaMA-3高达数百亿参数的矩阵运算至关重要。通过SIMD指令集和多线程优化,C++能充分释放现代CPU的计算潜力。 零成本抽象与内存管理 与Python的高开销对象模型不同,C++支持编译期多态和RAII机制,能够在不牺牲代码可维护性的前提下消除抽象带来的性能损耗。例如,在加载模型权重时可精确控制内存生命周期: // 使用连续内存块加载权重张量 float* weights = static_cast(aligned_alloc(64, sizeof(float) * tensor_size)); // 避免动态分配开销,提升缓存命中率 for (size_t i = 0

VsCode远程Copilot无法使用Claude Agent问题

最近我突然发现vscode Copilot中Claude模型突然没了,我刚充的钱啊!没有Claude我还用啥Copilot 很多小伙伴知道要开代理,开完代理后确实Claude会出来,本地使用是没有任何问题的,但是如果使用远程ssh的话,会出现访问异常,连接不上的情况。这时候很多小伙伴就在网上寻找方法,在vscode setting中添加这么一段代码。可以看看这篇博客 "http.proxy": "http://127.0.0.1:1082", "remote.extensionKind": { "GitHub.copilot": [ "ui" ], "GitHub.copilot-chat": [ "ui" ], "pub.name": [ "ui&

2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手?

文章目录 * 2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手? * 一、先给结论(个人开发者视角) * 二、2025 年 9 月最新价格与免费额度 * 三、横向体验对比(2025-11) * 1. 模型与响应 * 2. 项目理解力 * 3. 隐私与离线能力 * 四、怎么选?一句话总结 * 五、官方链接(清晰明了) * 六、结语:AI IDE 2025 的趋势 * 七、AI IDE 的底层工作原理:编辑器为什么突然变聪明了? * 1. 解析层:把你的项目拆得比你自己还清楚 * 2. 索引层: