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

🌸🌼🌺

相关推荐
youyin2 天前
HarmonyOS ArkUI 组件与自定义组件零基础:从搭页面到组件化开发
华为·harmonyos
HwJack202 天前
【HarmonyOS开发小实践】ArkTS 从 TypeScript 到方舟语言的演进
华为·harmonyos
威哥爱编程2 天前
HarmonyOS 7 星盾机密风控实战:设备风险因子端侧融合计算,可用不可见
harmonyos·arkts
威哥爱编程2 天前
HarmonyOS 7 应用快启实战:关键资源预加载进内存,冷启告别白屏
华为·harmonyos·arkts
马剑威(威哥爱编程)2 天前
【共创稿事节】HarmonyOS 7 视觉 AI 进阶实战:人脸检测 + 通用文字识别(OCR)两步接入
华为·harmonyos·arkts
HMS Core3 天前
HarmonyOS智慧多窗,让应用在任意窗口都“恰到好处”
harmonyos
梦想不只是梦与想3 天前
鸿蒙 应用发布准备工作(一)
harmonyos·鸿蒙上架·鸿蒙应用发布
马剑威(威哥爱编程)3 天前
【共创稿事节】HarmonyOS 7 文搜图实战:自然语言检索本地图片,全流程端侧闭环
华为·harmonyos
李游Leo3 天前
HarmonyOS 7 HAR + HSP 工程化实战:模块复用、包体积控制与依赖边界
harmonyos