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

HarmonyOS 6 TabSegmentButtonV2 页签型分段按钮使用文档

文章目录

    • 模块导入
    • 核心API说明
      • 1. 组件必填参数
      • 2. 选项对象类型
      • 3. 内置判断接口
    • 完整代码
    • 代码逻辑解析
    • 总结

模块导入

import { SegmentButtonV2Items, TabSegmentButtonV2 } from '@kit.ArkUI';

核心API说明

1. 组件必填参数

参数作用
items绑定分段按钮选项数据集
selectedIndex当前选中下标,从0开始计数

2. 选项对象类型

  • 纯文本:{text: '文字'}
  • 图片图标:{icon: 系统资源}
  • 符号图标:{symbol: 系统符号资源}
  • 图文混合:同时配置text+icon/symbol

3. 内置判断接口

  • item.isHybrid:单个选项是否图文混合
  • items.hasHybrid:整组按钮是否存在混合选项

完整代码

import { SegmentButtonV2Items, TabSegmentButtonV2 } from '@kit.ArkUI'; @Entry @ComponentV2 struct TabSegmentButtonV2Example { // 1.纯文本选项 @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([ { text: '手机' },{ text: '平板' },{ text: '2in1' },{ text: '智能穿戴' }, ]); @Local textSelectedIndex: number = 0; // 2.图片图标选项 @Local imageItems: SegmentButtonV2Items = new SegmentButtonV2Items([ { icon: $r('sys.media.ohos_ic_public_device_phone') }, { icon: $r('sys.media.ohos_ic_public_device_pad') }, { icon: $r('sys.media.ohos_ic_public_device_matebook') }, { icon: $r('sys.media.ohos_ic_public_device_watch') }, ]); @Local imageSelectedIndex: number = 0; // 3.系统符号图标选项 @Local symbolItems: SegmentButtonV2Items = new SegmentButtonV2Items([ { symbol: $r('sys.symbol.phone') }, { symbol: $r('sys.symbol.pad') }, { symbol: $r('sys.symbol.matebook') }, { symbol: $r('sys.symbol.watch') }, ]); @Local symbolSelectedIndex: number = 0; // 4.图文混合选项 @Local hybridItems: SegmentButtonV2Items = new SegmentButtonV2Items([ { text: '手机', symbol: $r('sys.symbol.phone') }, { text: '平板', symbol: $r('sys.symbol.pad') }, { text: '2in1', symbol: $r('sys.symbol.matebook') }, { text: '智能穿戴', symbol: $r('sys.symbol.watch') }, ]); @Local hybridSelectedIndex: number = 0; // 5.自由混搭不规则选项 @Local freeItems: SegmentButtonV2Items = new SegmentButtonV2Items([ { text: '年' },{ text: '月' },{ text: '周' },{ text: '日' }, { icon: $r('sys.media.ohos_ic_public_search_filled') }, ]); @Local freeSelectedIndex: number = 0; build() { Scroll() { Column({ space: 12 }) { VCard({ title: '纯文本选项' }) { TabSegmentButtonV2({ items: this.textItems, selectedIndex: this.textSelectedIndex, }) } VCard({ title: '纯图片图标选项' }) { TabSegmentButtonV2({ items: this.imageItems, selectedIndex: this.imageSelectedIndex, }) } VCard({ title: '纯符号图标选项' }) { TabSegmentButtonV2({ items: this.symbolItems, selectedIndex: this.symbolSelectedIndex, }) } VCard({ title: '图文混合选项' }) { TabSegmentButtonV2({ items: this.hybridItems, selectedIndex: this.hybridSelectedIndex, }) } VCard({ title: '自由混搭选项' }) { TabSegmentButtonV2({ items: this.freeItems, selectedIndex: this.freeSelectedIndex, }) } // 混合属性判断演示 Button(`单项是否图文混合:${this.textItems[0].isHybrid}`).width('70%') Button(`单项是否图文混合:${this.hybridItems[0].isHybrid}`).width('70%') Button(`整组是否含混合项:${this.textItems.hasHybrid}`).width('70%') Button(`整组是否含混合项:${this.hybridItems.hasHybrid}`).width('70%') } .padding(16) } .backgroundColor('#f1f3f5') .width('100%') .height('100%') } } // 卡片封装组件 @Builder function Noop() {} @Component export struct VCard { @Prop title: ResourceStr; @BuilderParam content: () => void = Noop; build() { Column({ space: 8 }) { Text(this.title) .maxLines(1) .textOverflow({ overflow: TextOverflow.Ellipsis }) this.content() } .backgroundColor(Color.White) .borderRadius(8) .padding(8) .width('100%') } }

运行效果如图:

代码逻辑解析

  1. 状态声明
    使用@Local定义V2局部状态,分别存储5种不同风格的按钮数据集与选中下标。

  2. 数据实例化
    通过new SegmentButtonV2Items([])批量创建选项数组,支持多种元素随意组合。

  3. 页签组件挂载
    固定传入items数据集与selectedIndex选中下标,自动渲染页签样式按钮,点击自动切换选中状态。

  4. 混合属性判定

  • isHybrid:判断单个选项是否同时存在文字与图标
  • hasHybrid:批量判断整组按钮有无混合样式条目

总结

  1. API 18及以上可用,低版本无法编译运行
  2. 必须搭配@ComponentV2装饰器,不兼容旧式@Component写法
  3. 手表设备暂不支持该组件,手机、平板、PC设备正常使用
  4. 选项支持任意混搭,无需统一同一种样式

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

http://www.rkmt.cn/news/1425218.html

相关文章:

  • Claude融资估值跃升700%的3个非技术驱动因子,CTO必须在Q3前掌握的董事会沟通话术
  • AI增强工作流:从信息处理到决策辅助的实践指南
  • AzurLaneAutoScript:告别重复操作,智能托管你的碧蓝航线之旅
  • 省建设厅关于做好2026年度建设工程专业高级工程师职务任职资格评审工作的通知
  • 告别手柄!用Pico SDK 230在Unity里实现无控制器手势交互(以抓取物体为例)
  • 如何实现多显示器DPI感知鼠标平滑移动:LittleBigMouse智能分辨率重载技术详解
  • Visual Syslog Server:Windows上最直观的日志监控解决方案终极指南
  • 2025年想入职转行网络安全,如何进行职业规划能最快转行?
  • W55RP20-EVB-MKR 模块 C语言实战 (NTP 从网络获取时间示例):从网络获取时间并实现自动同步
  • CAXA电子图板中文版保姆级下载及安装步骤指南
  • 从“网格终止”到“冗余版本”:深入解读LTE Turbo码里那些容易被忽略的设计细节
  • TypeScript编程:命名空间(Namespace)与模块化详解
  • 别再手动调资源了!Spark动态资源分配(Dynamic Allocation)在YARN/K8s上的保姆级配置指南
  • 如何快速提升GitHub访问速度:免费浏览器插件终极指南
  • 告别手动!为你的Unity项目打造一个AssetPostprocessor自动图片导入配置器
  • 三菱FX3U PLC串口通讯实战:从RS/RS2指令到Modbus RTU读取编码器数据
  • 破四唯、给企业放权、建黑名单——2026浙江职称评审迎来最严改革
  • 医疗器械无菌包装密封性测试:从破坏性抽检到无损全检的体系升级
  • 保姆级教程:用西门子博途V15给S7-1500 PLC配置Modbus TCP服务器(含DB块指针详解)
  • 从Matlab到边缘设备:手把手教你将训练好的U-Net模型导出为ONNX并在OpenCV DNN中部署
  • 树莓派4B摄像头配置进阶:libcamera-hello实测、VNC黑屏修复与OpenCV兼容性指南
  • 从1mm到8mm:手把手教你用MATLAB NIFTI工具包对脑图谱进行无损重采样(以BN_Atlas为例)
  • 告别‘TOPSAR-Split’报错:SNAP2StaMPS处理Sentinel-1 IW模式数据的三大核心配置与脚本修改详解
  • Jetson Orin Nano到手后,除了刷机,用jtop监控性能的完整配置流程
  • 避开遥感地类分析的那些“坑”:一次南京江北新区土地利用变化研究的复盘与思考
  • 2026年当下广西厂房装修服务团队选择标准深度解析:聚焦南宁华兴装饰工程有限公司 - 2026年企业资讯
  • 【AI培训中台-管理端-内容管理】
  • 轻松搞定论文:6款2026年顶尖AI写论文工具深度横评
  • 告别点灯:用STM32CubeMX和WS2812B打造你的第一个桌面氛围灯项目(附完整工程)
  • 别让jbd2偷走你的磁盘性能:实战排查Ext4文件系统IO飙升(附CentOS 6/7解决方案)