鸿蒙开发:案例集合Tabs:分段按钮组件

🎯 案例集合Tabs:分段按钮组件

🏷️ 效果图

📖 参考

🧩 拆解

  • 自定义分段按钮组件(V1-V2组件都可用)推荐
javascript 复制代码
@Component
export struct customSegmentButton {
  @State xLocation: number = 0

  changeXLocation(str: string) {
    if (str === '备忘') {
      this.xLocation = 0
      return
    }
    this.xLocation = (200 - 6) / 2
  }

  build() {
    Row() {
      Text('备忘')
        .borderRadius('50')
        .height(50)
        .layoutWeight(1)
        .textAlign(TextAlign.Center)
        .onClick(() => {
          this.changeXLocation('备忘')
        })
      Text('待办')
        .borderRadius('50')
        .height(50)
        .layoutWeight(1)
        .textAlign(TextAlign.Center)
        .onClick(() => {
          this.changeXLocation('待办')
        })

      Text()
        .borderRadius('50')
        .position({ x: this.xLocation })
        .height('100%')
        .width((200 - 6) / 2)
        .animation({ curve: Curve.Smooth, duration: 250 })
        .backgroundColor(Color.White)
        .zIndex(-1)
        .shadow({ radius: 20, color: '#26000000' })

    }
    .padding(3)
    .width(200)
    .height(56)
    .backgroundColor($r('sys.color.segment_button_v2_tab_button_background'))
    .borderRadius('50')
  }
}
  • SegmentButton(V1)不推荐
javascript 复制代码
import { LengthMetrics, SegmentButton, SegmentButtonOptions } from '@kit.ArkUI';

/**
 * 分段按钮使用当前区域可使用的最大宽度作为组件宽度,并且根据按钮个数平均分配每个按钮宽度
 * 分段按钮高度根据按钮内容(文本及图片)自动适应,其最小高度为28vp
 */
@Component
export struct SegmentButtonV1Case {
  @State tabOptions: SegmentButtonOptions =
    SegmentButtonOptions.capsule({
      buttons: [{ text: '备忘' }, { text: '待办' }],
      buttonPadding: 3, // 整个按钮组内边距
      backgroundColor: $r('sys.color.segment_button_v2_tab_button_background'), // 整个按钮组背景
      selectedBackgroundColor: Color.White, // 选中的按钮背景色
      selectedFontColor: Color.Black, // 选中的按钮文字颜色
      fontWeight: FontWeight.Normal, // 按钮文字加粗
      fontSize: 16, // 按钮文字大小
      selectedFontSize: 16,// 选中按钮文字大小
      localizedButtonPadding: { top: new LengthMetrics(16), bottom: new LengthMetrics(16) }, // // 选中按钮内边距
    })
  @State tabSelectedIndexes: number[] = [0]

  build() {
    SegmentButton({
      options: this.tabOptions,
      selectedIndexes: $tabSelectedIndexes, // 默认选择某项的下标
      onItemClicked: (idx: number) => { // 选中某项下标
        this.getUIContext().getPromptAction().showToast({ message: `当前下标${idx}` })
      },
    })
      .width(200)

  }
}
  • SegmentButtonV2(V2)推荐
javascript 复制代码
import { LengthMetrics, SegmentButtonV2Items, TabSegmentButtonV2 } from "@kit.ArkUI";

@ComponentV2
export struct SegmentButtonV2Case {
  @Local textSelectedIndex: number = 0

  build() {
    TabSegmentButtonV2({
      items: new SegmentButtonV2Items([
        { text: '备忘' },
        { text: '待办' },
      ]),
      selectedIndex: this.textSelectedIndex!!, // 默认选择某项的下标
      buttonMinHeight: new LengthMetrics(50), // 整个按钮组的高度
      buttonBorderRadius: new LengthMetrics(50), // 整个按钮组的圆角
      buttonPadding: new LengthMetrics(3), // 整个按钮组的内边距
      itemMinHeight: new LengthMetrics(50), // 每个按钮的高度
      itemBorderRadius: new LengthMetrics(50), // 每个按钮的圆角
      itemFontSize: new LengthMetrics(16), // 每个按钮的文字大小
      itemSelectedFontSize: new LengthMetrics(16), // 选中按钮的文字大小
      itemSelectedFontWeight: FontWeight.Normal, // 选中按钮的文字加粗
      onItemClicked: (idx: number) => { // 选中某项下标
        this.getUIContext().getPromptAction().showToast({ message: `当前下标${idx}` })
      },
    })
      .width(200)
  }
}

🌍 案例集合Tabs

🌸🌼🌺

相关推荐
anyup3 小时前
🔥2026最推荐的跨平台方案:H5/小程序/App/鸿蒙,一套代码搞定
前端·uni-app·harmonyos
Ranger09298 小时前
鸿蒙开发新范式:Gpui
rust·harmonyos
Huang兄9 小时前
鸿蒙-深色模式适配
harmonyos·arkts·arkui
SummerKaze2 天前
为鸿蒙开发者写一个 nvm:hmvm 的设计与实现
harmonyos
在人间耕耘4 天前
HarmonyOS Vision Kit 视觉AI实战:把官方 Demo 改造成一套能长期复用的组件库
人工智能·深度学习·harmonyos
王码码20354 天前
Flutter for OpenHarmony:socket_io_client 实时通信的事实标准(Node.js 后端的最佳拍档) 深度解析与鸿蒙适配指南
android·flutter·ui·华为·node.js·harmonyos
HarmonyOS_SDK4 天前
【FAQ】HarmonyOS SDK 闭源开放能力 — Ads Kit
harmonyos
Swift社区4 天前
如何利用 ArkUI 框架优化鸿蒙应用的渲染性能
华为·harmonyos
特立独行的猫a4 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS影视票房榜组件完整实现过程
华为·uni-app·harmonyos·轮播图·uniapp-x
盐焗西兰花4 天前
鸿蒙学习实战之路-STG系列(5/11)-守护策略管理-添加与修改策略
服务器·学习·harmonyos