华为仓颉鸿蒙HarmonyOS NEXT原生UI容器组件Refresh(下拉刷新/上拉加载更多)
可以进行页面下拉操作并显示刷新动效的容器组件。
子组件
支持单个子组件。
构造函数
init(RefreshParams,() -> Unit)
public init(rp: RefreshParams, content: () -> Unit)
创建refresh组件。
| 参数名 | 参数类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| rp | RefreshParams | 是 | - | 设置组件刷新时的参数。 |
| content | () -> Unit | 否 | 声明容器子组件。 |
枚举说明
RefreshStatus
下拉状态。
| 枚举值 | 描述 |
|---|---|
| Inactive | 默认未下拉状态。 |
| Drag | 下拉中,下拉距离小于刷新距离。 |
| OverDrag | 下拉中,下拉距离超过刷新距离。 |
| Refresh | 下拉结束,回弹至刷新距离,进入刷新状态。 |
| Done | 刷新结束,返回初始状态(顶部)。 |
自定义类型说明
RefreshParams
构造函数
init(Bool, Length, Int32)
public init(refreshing!: Bool, offset!: Length = 16.vp, friction!: Int32 = 62)
RefreshParams构造函数。
| 参数名 | 参数类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| refreshing | Bool | 是 | - | 当前组件是否正在刷新。 |
| offset | Length | 是 | 16.vp | 下拉起点距离组件顶部的距离,单位vp。已废弃,无替代接口说明:offset取值范围(0vp,64vp)。当入参小于等于0.vp时,按默认值16.vp处理;大于64vp按照64vp处理。不支持百分比,不支持负数。 |
| friction | Int32 | 是 | 62 | 列表项间距。列表项之间会有一定的初始高度,当设置了space后,列表项间距为初始高度加上space设置的高度。 |
init((Bool, (Bool) -> Unit), Length, Int32)
public init(refreshing!: (Bool, (Bool) -> Unit), offset!: Length = 16.vp, friction!: Int32 = 62)
RefreshParams构造函数。
| 参数名 | 参数类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| refreshing | (Bool,(Bool) -> Unit) | 是 | - | 当前组件是否正在刷新。 |
| offset | Length | 是 | 16.vp | 下拉起点距离组件顶部的距离,单位vp。已废弃,无替代接口说明:offset取值范围(0vp,64vp)。当入参小于等于0.vp时,按默认值16.vp处理;大于64vp按照64vp处理。不支持百分比,不支持负数。 |
| friction | Int32 | 是 | 62 | 列表项间距。列表项之间会有一定的初始高度,当设置了space后,列表项间距为初始高度加上space设置的高度。 |
事件
onStateChange((RefreshStatus)-> Unit)
public func onStateChange(callback: (RefreshStatus)-> Unit): This
设置刷新状态变更时,触发回调。
| 参数名 | 参数类型 | 描述 |
|---|---|---|
| callback | (RefreshStatus)-> Unit | 当前刷新状态变更时,触发回调。- RefreshStatus:刷新状态。 |
onRefreshing(()-> Unit)
public func onRefreshing(callback: ()-> Unit): This
设置进入刷新状态时,触发回调。
| 参数名 | 参数类型 | 描述 |
|---|---|---|
| callback | () => void | 进入刷新状态时触发回调。 |
示例代码
本示例展示了Refresh的基础用法。
import ohos.base.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
@Entry
@Component
class MyView {
@State var isRefreshing: Bool = false
@State var arr: Array<String> = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
func build(){
Column() {
Refresh(RefreshParams(refreshing: @Binder(this.isRefreshing))) {
List() {
ForEach(this.arr,itemGeneratorFunc: {item: String, idx: Int64 =>
ListItem() {
Text(""+item)
.width(100.percent)
.height(100)
.fontSize(16)
.textAlign(TextAlign.Center)
.borderRadius(10)
.backgroundColor(0xFFFFFF)
}
},
keyGeneratorFunc: {item: String, idx: Int64 => return item})
}.onScrollIndex({first: Int32, last: Int32 =>
AppLog.info("list onScrollIndex")
AppLog.info("fist:" + first.toString())
AppLog.info("last:" + last.toString())
}
)
.width(100.percent)
.height(100.percent)
.divider(strokeWidth: 1.vp, color: Color(0xFfff00),startMargin: 10.vp, endMargin: 10.vp)
.scrollBar(BarState.Off)
}
.id("refresh")
.onStateChange(
{
refreshStatus: RefreshStatus =>
AppLog.info("Refresh onStatueChange state is: " + refreshStatus.toString())
}
).onRefreshing({=>
AppLog.info("onRefreshing this.isRefreshing is is======= ${isRefreshing}")
AppLog.info("onRefreshing test")
}
).backgroundColor(0x89CFF0)
}
}
}

浙公网安备 33010602011771号