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

什么是NVIDIA Isaac Sim WebRTC Streaming Client?

NVIDIA Isaac Sim WebRTC Streaming Client是NVIDIA为Isaac Sim打造的远程串流客户端,基于WebRTC协议,可让用户在无高性能GPU的设备上远程访问运行于云端或工作站的Isaac Sim(含无头模式),实现低延迟交互与图形化界面显示,是机器人仿真远程协作与开发的核心工具。以下从核心特性、运行条件、使用流程、关键配置与常见问题等方面详细介绍: 核心定位与优势 * 核心功能:将Isaac Sim的图形界面、物理仿真画面与交互操作远程串流至本地,支持模型编辑、场景调试、机器人控制等全流程操作,无需本地渲染能力。 * 核心优势 * 低延迟传输:WebRTC协议优化实时音视频流,适配机器人仿真的实时交互需求。 * 跨平台兼容:支持Linux、Windows、macOS客户端,适配主流桌面系统。 * 适配无头模式:完美对接Isaac Sim headless实例,适合云端/服务器部署场景。 * 高安全性:通过加密传输与端口隔离,保障远程访问安全。 运行要求 1. 服务端(Isaac Sim 侧)

Web 前端基础知识点汇总

Web 前端基础知识点汇总

一、HTML 基础 1.1 浏览器内核 浏览器内核核心包含渲染引擎(解析 HTML/CSS,渲染页面)和JS 引擎(解析执行 JavaScript),不同浏览器内核差异如下: 浏览器内核备注IETrident适配 IE、早期 EdgeFirefoxGecko近年市场份额下降,存在打开速度慢、升级频繁问题SafariWebKit常被误称为 Chrome 内核(Chrome 现已改用 Blink)ChromeChromium/BlinkBlink 是 WebKit 分支,多数国产浏览器最新版基于 Blink 二次开发OperaPresto/Blink早期用 Presto,现跟随 Chrome 使用 BlinkEdgeEdgeHTML/Blink新版 Edge 已切换为 Blink 内核 1.2 Web 标准(

WebRTC实现音视频通话全流程

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。 WebRTC的应用场景 点对点视频聊天:如 微信视频 等实时视频通话应用。 多人视频会议:企业级多人视频会议系统,如飞书、钉钉、腾讯会议等。 在线教育:如腾讯课堂、网易云课堂等。 直播:游戏直播、课程直播等。 WebRTC实现音视频通话过程 * 1.server端新建socket服务(作为信令服务器),当用户进入客户端的时候将用户端与socket建立连接。 * 2.当客户端与server端建立连接后,客户端会向server端发起一个加入房间的事件,并携带房间id。 * 3.server端监听到加入房间的事件后,会将房间id添加到指定房间中,这样,所有加入同一个房间的客户端

别再手动切图!用 ClaudeCode+Figma-MCP 实现 UI 设计 1:1 前端还原

使用 Figma-MCP 实现设计还原 Figma-MCP(Measure Copy Paste)是 Figma 的插件,能够快速提取设计稿中的间距、颜色、尺寸等参数,避免手动测量。安装后选中元素即可查看属性,按 Alt 键复制数值,直接粘贴到代码中。 配置 ClaudeCode 生成代码 ClaudeCode 是 Claude 的代码生成功能,支持根据设计参数输出前端代码。在对话中描述需求并附上 Figma-MCP 提取的数据,例如: 生成一个 React 按钮组件,参数如下: - 宽度:120px - 高度:40px - 背景色:#3B82F6 - 圆角:8px - 文字:"