赞
踩
自适应延伸是在不同尺寸设备下,当页面显示内容个数不一并延伸到屏幕外时,可通过滚动条拖动展示。适用于线性布局中内容无法一屏展示的场景。常见以下两类实现方法。
一、List组件
List子项过多一屏放不下时,未展示的子项通过滚动条拖动显示。通过scrollBar属性设置滚动条的常驻状态,edgeEffect属性设置拖动到极限的回弹效果。
纵向List:
- @Entry
- @Component
- struct ListExample1 {
- @State arr: string[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
- @State alignListItem: ListItemAlign = ListItemAlign.Start
-
- build() {
- Column() {
- List({ space: 20, initialIndex: 0 }) {
- ForEach(this.arr, (item) => {
- ListItem() {
- Text('' + item)
- .width('100%')
- .height(100)
- .fontSize(16)
- .textAlign(TextAlign.Center)
- .borderRadius(10)
- .backgroundColor(0xFFFFFF)
- }
- .border({ width: 2, color: Color.Green })
- }, item => item)
- }
- .border({ width: 2, color: Color.Red, style: BorderStyle.Dashed })
- .scrollBar(BarState.On) // 滚动条常驻
- .edgeEffect(EdgeEffect.Spring) // 滚动到边缘再拖动回弹效果
-
- }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding(20)
- }
- }
-
横向List
- @Entry
- @Component
- struct ListExample2 {
- @State arr: string[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
- @State alignListItem: ListItemAlign = ListItemAlign.Start
-
- build() {
- Column() {
- List({ space: 20, initialIndex: 0 }) {
- ForEach(this.arr, (item) => {
- ListItem() {
- Text('' + item)
- .height('100%')
- .width(100)
- .fontSize(16)
- .textAlign(TextAlign.Center)
- .borderRadius(10)
- .backgroundColor(0xFFFFFF)
- }
- .border({ width: 2, color: Color.Green })
- }, item => item)
- }
- .border({ width: 2, color: Color.Red, style: BorderStyle.Dashed })
- .scrollBar(BarState.On) // 滚动条常驻
- .edgeEffect(EdgeEffect.Spring) // 滚动到边缘再拖动回弹效果
- .listDirection(Axis.Horizontal) // 列表水平排列
- }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding(20)
- }
- }
-
二、Scroll组件
线性布局中,当子组件的布局尺寸超过父组件的尺寸时,内容可以滚动。在Column或者Row外层包裹一个可滚动的容器组件Scroll实现。
纵向Scroll:
- @Entry
- @Component
- struct ScrollExample {
- scroller: Scroller = new Scroller();
- private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
-
- build() {
- Scroll(this.scroller) {
- Column() {
- ForEach(this.arr, (item) => {
- Text(item.toString())
- .width('90%')
- .height(150)
- .backgroundColor(0xFFFFFF)
- .borderRadius(15)
- .fontSize(16)
- .textAlign(TextAlign.Center)
- .margin({ top: 10 })
- }, item => item)
- }.width('100%')
- }
- .backgroundColor(0xDCDCDC)
- .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
- .scrollBar(BarState.On) // 滚动条常驻显示
- .scrollBarColor(Color.Gray) // 滚动条颜色
- .scrollBarWidth(30) // 滚动条宽度
- .edgeEffect(EdgeEffect.Spring) // 滚动到边沿后回弹
- }
- }
-
复制
横向Scroll:
参考引用自官方文档。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。