本文原创发布在华为开发者社区。
介绍
该示例实现了List横向滑动容器高度自适应,通过List模拟美团首页菜单横向滚动高度自适应效果。
效果预览
使用说明
安装到手机后不会在桌面生成桌面图标,点击卡片即可进入本应用。
实现思路
在list组件区域变化时获取宽度和高度
List({ scroller: this.listScroller }) { ... } ... //获取高度宽度 .onAreaChange((_, n) => { if (!this.containerWidth) { this.containerWidth = Number(n.width) this.containerHeight = Number(n.height) this.containerMaxHeight = this.containerHeight // 最后一页高度即为最小高度 // 20-行间距 3-行数 this.containerMinHeight = (this.containerHeight - 20) / 3 * this.lastPageLines + 10 * (this.lastPageLines - 1) } }) //实现容器高度自适应 .onWillScroll((x)=>{ this.updateContainerHeight(x) })
通过updateContainerHeight方法计算高度变化,实现横向滚动高度自适应效果。
updateContainerHeight(x: number) { let offsetX = this.listScroller.currentOffset().xOffset + x - this.containerWidth * (this.pageSize - 2) if (offsetX > 0) { let h = offsetX / this.containerWidth * (this.containerMaxHeight - this.containerMinHeight) // 根据横向偏移距离等比计算高度变化 this.containerHeight = this.containerMaxHeight - h } else { this.containerHeight = this.containerMaxHeight } }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。