鸿蒙开发:案例集合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

🌸🌼🌺

相关推荐
FF2501_940228588 小时前
HarmonyOS应用开发实战:猫猫大作战-在排行榜和历史记录查询中,排序是必不可少的操作【apple_product_name】
华为·harmonyos·鸿蒙
程序员黑豆13 小时前
鸿蒙应用开发:@Provider 与 @Consumer 跨组件双向同步详解
前端·harmonyos
程序员黑豆14 小时前
鸿蒙应用开发之跨组件传参:@Provide 与 @Consume 跨层级数据同步详解
前端·harmonyos
懿路向前14 小时前
【HarmonyOS学习笔记】2026-07-30 | 小艺开放平台智能体接入实战
笔记·学习·harmonyos
大锅盖114 小时前
HarmonyOS ArkTS 的新手练手样例:从 Text 和 Button 开始,做一个会变化的计数页面
华为·harmonyos
袁震16 小时前
小图传输,大图呈现——用 HarmonyOS 7 端侧 AI 实现 4 倍图像超分重建
人工智能·华为·harmonyos
结网的兔子17 小时前
【前端开发】Web端迁移至 uni-app 及鸿蒙扩展方案对比
前端·uni-app·harmonyos
落叶飘飘s17 小时前
餐饮服务与软件创新的融合:解析海底捞 APP 的 Flutter 鸿蒙开发之路
flutter·华为·harmonyos
qizayaoshuap18 小时前
# HarmonyOS ArkTS 滑动删除列表实战(三):交互式列表增删操作
华为·harmonyos
GitCode官方19 小时前
openPangu-2.0-Pro 模型及技术报告正式开源上线 AtomGit AI
人工智能·华为·开源·harmonyos·atomgit