三十、【鸿蒙 NEXT】实现吸顶效果

【前言】

在开发过程中我们可能会实现如下的吸顶效果,当向上滑动时,列表不滑动,只滑动列表上方的布局,当上方布局隐藏后,再滑动列表。当向下滑动时,先滑动列表,当列表滑到头时,再将上方的布局拉下来,效果如下:

1、整体布局

顶部是一个图片区域,这里用蓝色背景图表示

中间是一个tab页,用来切换内容

最下边是一个list,展示tab中的条目,有滚动条

2、使用List组件 + nestedScroll属性实现吸顶效果

这里将顶部图片区域,及tab作为两个ListItem,tab组件内部也是一个List,并给tab组件的List配置如下属性

.nestedScroll({ scrollForward:NestedScrollMode.PARENT_FIRST, scrollBackward:NestedScrollMode.SELF_FIRST })

属性值表示向上滑动时以父List滑动为先,向下滑动时以自己滑动为先

3、完整代码如下:

javascript 复制代码
@Entry
@Component
struct ScrollPage {
  @State msgList:MsgInfo[] =[]

  aboutToAppear(): void {
    let arr:MsgInfo[] = []
    for (let index = 0; index < 20; index++) {
      let msg:MsgInfo = {icon:$r('app.media.heart2'), name:`好友1-${index}`}
      arr.push(msg)
    }
    this.msgList = arr
  }

  build() {
    Column(){
      List(){
        ListItem(){
          Image($r('app.media.background')).width('100%').height(100)
        }
        ListItem(){
          Tabs(){
            TabContent(){
              List() {
                ForEach(this.msgList,(item:MsgInfo)=> {
                  ListItem(){
                    Row(){
                      Image(item.icon).width(40).height(40)
                      Text(item.name)
                    }
                  }
                })
              }.width('100%').height(600)
              .nestedScroll({
                scrollForward:NestedScrollMode.PARENT_FIRST,
                scrollBackward:NestedScrollMode.SELF_FIRST
              }).scrollBar(BarState.Off)
            }.tabBar('好友1').align(Alignment.Top)
            TabContent(){
            }.tabBar('好友2')
          }
        }
      }.scrollBar(BarState.Off)
      .edgeEffect(EdgeEffect.None)
    }
    .height('100%')
    .width('100%')
  }
}

interface MsgInfo {
  icon:ResourceStr
  name:string
}
相关推荐
2301_822703202 小时前
开源鸿蒙跨平台Flutter开发:幼儿疫苗全生命周期追踪系统:基于 Flutter 的免疫接种档案与状态机设计
算法·flutter·华为·开源·harmonyos·鸿蒙
2301_822703202 小时前
鸿蒙flutter三方库实战——教育与学习平台:Flutter Markdown
学习·算法·flutter·华为·harmonyos·鸿蒙
2301_822703205 小时前
开源鸿蒙跨平台Flutter开发:蛋白质序列特征提取:氨基酸组成与理化性质计算
flutter·华为·开源·harmonyos·鸿蒙
钛态5 小时前
Flutter 三方库 ethereum_addresses 的鸿蒙化适配指南 - 掌控区块链地址资产、精密校验治理实战、鸿蒙级 Web3 专家
flutter·harmonyos·鸿蒙·openharmony·ethereum_addresses
提子拌饭1335 小时前
开源鸿蒙跨平台Flutter开发:中小学百米跑信息记录表:基于 Flutter 的高精计时与运动学曲线引擎
flutter·华为·开源·harmonyos
2301_822703206 小时前
光影进度条:鸿蒙Flutter实现动态光影效果的进度条
算法·flutter·华为·信息可视化·开源·harmonyos
Industio_触觉智能6 小时前
触觉智能Purple Pi OH开发板已适配OpenHarmony6.1,将作为LTS长期支持版,附API参考说明
鸿蒙·鸿蒙系统·openharmony·lts·开源鸿蒙·鸿蒙开发板·openharmony6.1
独特的螺狮粉6 小时前
城市空气质量简易指数查询卡片:鸿蒙Flutter框架 实现的空气质量查询应用
开发语言·flutter·华为·架构·harmonyos
互联网散修7 小时前
零基础鸿蒙应用开发第三十二节:JSON核心基础与文件的读写
华为·json·harmonyos
我的世界洛天依7 小时前
胡桃讲编程:华为鸿蒙系统能用 MT 管理器反编译吗?(安装包 + 系统根目录实战指南)
华为·harmonyos·机器翻译