温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

OpenHarmony列表组件怎么吸顶

发布时间:2026-09-01 08:06:16 来源:亿速云 阅读:99 作者:小樊 栏目:软件技术

在 OpenHarmony(ArkUI) 中,实现**列表吸顶(Sticky Header)**通常有以下几种方式,取决于你使用的是 List 组件 还是 Scroll 容器。


一、List 组件原生吸顶(推荐)

✅ 使用 List + ListItemGroup

OpenHarmony 的 List 原生支持分组吸顶。

示例代码

List() {
  ListItemGroup({ header: this.Header('分组1') }) {
    ListItem() { Text(' item 1') }
    ListItem() { Text(' item 2') }
  }

  ListItemGroup({ header: this.Header('分组2') }) {
    ListItem() { Text(' item 3') }
    ListItem() { Text(' item 4') }
  }
}
.width('100%')
.height('100%')

Header 示例

@Builder
Header(title: string) {
  Text(title)
    .fontSize(18)
    .fontWeight(FontWeight.Bold)
    .backgroundColor('#f1f1f1')
    .width('100%')
    .height(50)
}

✅ 效果:
滚动时,当前分组的 Header 会吸顶,直到下一个分组顶上来。


二、单个组件吸顶(Scroll + sticky)

如果你用的是 Scroll 而不是 List,可以手动实现吸顶。

方式:监听滚动偏移

@State offsetY: number = 0

Scroll() {
  Column() {
    Text('吸顶标题')
      .position({ y: this.offsetY })
      .backgroundColor('#fff')
      .width('100%')

    ForEach([1,2,3,4,5], (item) => {
      Text('内容 ' + item)
        .height(100)
    })
  }
}
.onScroll((x, y) => {
  this.offsetY = Math.max(0, y)
})

⚠️ 这种方式不够优雅,适合简单场景。


三、Tabs + List 实现吸顶(常见业务)

如果是 顶部 Tab 吸顶 + 列表滚动:

Column() {
  Tabs() {
    TabContent() {
      List() { ... }
    }
  }
  .barPosition(BarPosition.Start)
}

Tabs 默认吸顶,适合新闻、商城类页面。


四、注意事项(坑点)

  1. 只有 ListItemGroup 的 header 才能吸顶
  2. 普通 ListItem 不能吸顶
  3. API 版本要求:
    • OpenHarmony 3.2+
    • ArkUI eTS 支持完整

五、总结

场景 推荐方案
分组列表 ListItemGroup ✅
单个标题吸顶 Scroll + position
Tab + 列表 Tabs
复杂布局 自定义 Scroll 监听

如果你能告诉我:

  • OpenHarmony 版本
  • 是 List 还是 Scroll
  • 吸顶的是分组头还是搜索框

我可以给你更精确的代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手