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

🌸🌼🌺

相关推荐
弓.长.1 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-webview — 网页渲染组件
react native·react.js·harmonyos
UnicornDev2 小时前
【HarmonyOS 6】今日统计卡片实战:运动记录数据概览
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
前端不太难3 小时前
如何设计 AI Native 鸿蒙应用架构
人工智能·架构·harmonyos
弓.长.3 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:@react-native-picker
react native·react.js·harmonyos
恋猫de小郭3 小时前
Android 禁止侧载将正式实施,需要等待 24 小时冷静期
android·flutter·harmonyos
ShuiShenHuoLe3 小时前
组件的状态ComponentV2
harmonyos·鸿蒙
弓.长.3 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-button — 自定义按钮组件
react native·react.js·harmonyos
坚果派·白晓明3 小时前
在 macOS 中搭建鸿蒙 PC 三方库交叉编译开发环境
macos·华为·harmonyos
枫叶丹43 小时前
【HarmonyOS 6.0】使用PAC脚本灵活管理网络连接
开发语言·网络安全·华为·信息与通信·harmonyos
longlongValue4 小时前
鸿蒙静态资源HAR开发日志
harmonyos·har·静态资源·har开发