鸿蒙开发:案例集合Tabs:tabs竖向粘性

🎯 案例集合Tabs:tabs竖向粘性

🌍 案例集合Tabs

🚪 最近开启了学员班级点我欢迎加入

🏷️ 效果图

📖 参考

🧩 拆解

  • 自定义tabs突出球 左右滑动
javascript 复制代码
/**
 * tab模拟数据
 */
const tabsMockData: string[] = ['购物', '体育', '服装', '军事']
/**
 * TabContents模拟数据
 */
const tabContentsMockData: number[] = [1, 2, 3, 4, 5]

@Component
export struct TabsStickyCase {

  /**
   * 标签内容
   */
  @Builder
  tabContentsBuilder() {
    List({ space: 20 }) {
      ForEach(tabContentsMockData, (item: number) => {
        ListItem() {
          Text(item.toString())
            .height(200)
            .width('100%')
            .borderRadius(10)
            .textAlign(TextAlign.Center)
            .borderWidth(1)
            .borderColor(Color.Gray)
        }
      })
    }
    .width('100%')
    .height('100%')
    .padding(10)
    .scrollBar(BarState.Off) // 关闭滚动条
    .edgeEffect(EdgeEffect.None) // 关闭边缘效果
    // 关键:
    .nestedScroll({
      scrollForward: NestedScrollMode.PARENT_FIRST, // 滚动组件往末尾端滚动时:父组件先滚动
      scrollBackward: NestedScrollMode.SELF_FIRST // 滚动组件往起始端滚动时:自身先滚动,自身滚动到边缘以后父组件滚动。
    })
  }

  /**
   * 模拟Swipe组件或者banner组件
   */
  @Builder
  mockSwipeBuilder() {
    Stack({ alignContent: Alignment.Center }) {
      Image($r('app.media.startIcon'))
        .width('100%')
        .height(200)
        .draggable(false)
        .borderRadius(10)
      Text('模拟Swipe组件')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
    }
    .height(200)
    .width('100%')
  }

  build() {
    Column() {
      Scroll() {
        Column() {
          this.mockSwipeBuilder()

          // 标签导航
          Tabs() {
            ForEach(tabsMockData, (item: string) => {
              TabContent() {
                this.tabContentsBuilder()
              }
              .tabBar(SubTabBarStyle.of(item)
                .indicator({ width: 72, marginTop: 13, color: Color.Orange })
                .board({ borderRadius: 0 })
                .labelStyle({ selectedColor: Color.Orange, font: { size: 16 } })
              )
            })
          }
          .barHeight(50)

        }
      }
      .layoutWeight(1)
      .scrollBar(BarState.Off) // 关闭滚动条
      .edgeEffect(EdgeEffect.None) // 关闭边缘效果
    }
    .size({ height: '100%', width: '100%' })
  }
}

🌸🌼🌺

相关推荐
lbb 小魔仙17 小时前
【HarmonyOS实战】OpenHarmony + RN:自定义 useFormik 表单处理
react native·harmonyos
果粒蹬i17 小时前
【HarmonyOS】DAY7:鸿蒙跨平台 Tab 开发问题与列表操作难点深度复盘
华为·harmonyos
王码码203518 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
ITUnicorn18 小时前
【HarmonyOS6】ArkTS 自定义组件封装实战:动画水杯组件
华为·harmonyos·arkts·鸿蒙·harmonyos6
全栈探索者19 小时前
@Component + struct = 你的新函数组件——React 开发者的鸿蒙入门指南(第 2 期)
react·harmonyos·arkts·前端开发·deveco studio·鸿蒙next·函数组件
廖松洋(Alina)19 小时前
【收尾以及复盘】flutter开发鸿蒙APP之成就徽章页面
flutter·华为·开源·harmonyos·鸿蒙
廖松洋(Alina)20 小时前
【收尾以及复盘】flutter开发鸿蒙APP之打卡日历页面
flutter·华为·开源·harmonyos·鸿蒙
廖松洋(Alina)20 小时前
【收尾以及复盘】flutter开发鸿蒙APP之本月数据统计页面
flutter·华为·开源·harmonyos·鸿蒙
果粒蹬i20 小时前
【HarmonyOS】DAY8:React Native for OpenHarmony 实战:多端响应式布局与高可用交互设计
react native·交互·harmonyos
讯方洋哥1 天前
HarmonyOS App开发——职前通应用App开发(下)
华为·harmonyos