当前位置: 首页 > news >正文

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件

一、操作环境

操作系统:  Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1+

二、Scroll容器组件

可滚动的容器组件,当子组件的布局尺寸超过父组件的尺寸时,内容可以滚动。

子组件

支持单个子组件。

接口

Scroll(scroller?: Scroller)

参数:

参数名

参数类型

必填

参数描述

scroller

Scroller

可滚动组件的控制器。用于与可滚动组件进行绑定。

属性

除支持通用属性外,还支持以下属性:

名称

参数类型

描述

scrollable

ScrollDirection

设置滚动方向。

默认值:ScrollDirection.Vertical

scrollBar

BarState

设置滚动条状态。

默认值:BarState.Auto

说明:

如果容器组件无法滚动,则滚动条不显示。

如果容器组件的子组件大小为无穷大,则滚动条不支持拖动和伴随滚动。

scrollBarColor

string | number | Color

设置滚动条的颜色。

scrollBarWidth

string | number

设置滚动条的宽度,不支持百分比设置。

默认值:4

单位:vp

说明:

如果滚动条的宽度超过其高度,则滚动条的宽度会变为默认值。

edgeEffect

EdgeEffect

设置滑动效果,目前支持的滑动效果参见EdgeEffect的枚举说明。

默认值:EdgeEffect.None

ScrollDirection枚举说明

名称

描述

Horizontal

仅支持水平方向滚动。

Vertical

仅支持竖直方向滚动。

None

不可滚动。

Free(deprecated)

支持竖直或水平方向滚动。

从API version 9开始废弃。

事件

名称

功能描述

onScrollFrameBegin9+(event: (offset: number, state: ScrollState) => { offsetRemain })

每帧开始滚动时触发,事件参数传入即将发生的滚动量,事件处理函数中可根据应用场景计算实际需要的滚动量并作为事件处理函数的返回值返回,Scroll将按照返回值的实际滚动量进行滚动。

- offset:即将发生的滚动量。

- state:当前滚动状态。

- offsetRemain:实际滚动量。

触发该事件的条件 :

1、滚动组件触发滚动时触发,包括键鼠操作等其他触发滚动的输入设置。

2、调用控制器接口时不触发。

3、越界回弹不触发。

说明:

支持offsetRemain为负值。

若通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动,需设置子滚动节点的EdgeEffect为None。如Scroll嵌套List滚动时,List组件的edgeEffect属性需设置为EdgeEffect.None。

onScroll(event: (xOffset: number, yOffset: number) => void)

滚动事件回调, 返回滚动时水平、竖直方向偏移量。

触发该事件的条件 :

1、滚动组件触发滚动时触发,支持键鼠操作等其他触发滚动的输入设置。2、通过滚动控制器API接口调用。

3、越界回弹。

onScrollEdge(event: (side: Edge) => void)

滚动到边缘事件回调。

触发该事件的条件 :

1、滚动组件滚动到边缘时触发,支持键鼠操作等其他触发滚动的输入设置。

2、通过滚动控制器API接口调用。

3、越界回弹。

onScrollEnd(deprecated) (event: () => void)

滚动停止事件回调。

该事件从API version 9开始废弃,使用onScrollStop事件替代。

触发该事件的条件 :

1、滚动组件触发滚动后停止,支持键鼠操作等其他触发滚动的输入设置。

2、通过滚动控制器API接口调用后停止,带过渡动效。

onScrollStart9+(event: () => void)

滚动开始时触发。手指拖动Scroll或拖动Scroll的滚动条触发的滚动开始时,会触发该事件。使用Scroller滚动控制器触发的带动画的滚动,动画开始时会触发该事件。

onScrollStop9+(event: () => void)

滚动停止时触发。手拖动Scroll或拖动Scroll的滚动条触发的滚动,手离开屏幕并且滚动停止时会触发该事件。使用Scroller滚动控制器触发的带动画的滚动,动画停止时会触发该事件。

NOTE

若通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动,需设置子滚动节点的EdgeEffect为None。如Scroll嵌套List滚动时,List组件的edgeEffect属性需设置为EdgeEffect.None。

Scroller

可滚动容器组件的控制器,可以将此组件绑定至容器组件,然后通过它控制容器组件的滚动,同一个控制器不可以控制多个容器组件,目前支持绑定到List、Scroll、ScrollBar、Grid、WaterFlow上。

导入对象

 
  1. scroller: Scroller = new Scroller()

scrollTo

scrollTo(value: { xOffset: number | string, yOffset: number | string, animation?: { duration: number, curve: Curve } }): void

滑动到指定位置。

参数:

参数名

参数类型

必填

参数描述

xOffset

number | string

水平滑动偏移。

说明:

该参数值不支持设置百分比。

当值小于0时,不带动画的滚动,按0处理。带动画的滚动,滚动到起始位置后停止。

仅滚动轴为x轴时生效。

yOffset

number | string

垂直滑动偏移。

说明:

该参数值不支持设置百分比。

当值小于0时,不带动画的滚动,按0处理。带动画的滚动,滚动到起始位置后停止。

仅滚动轴为y轴时生效。

animation

{

duration: number,

curve: Curve

}

动画配置:

- duration: 滚动时长设置。

- curve: 滚动曲线设置。

默认值:

{

duration: 0,

curve: Curve.Ease

}

说明:

设置为小于0的值时,按默认值显示。

scrollEdge

scrollEdge(value: Edge): void

滚动到容器边缘,不区分滚动轴方向,Edge.Top和Edge.Start表现相同,Edge.Bottom和Edge.End表现相同。

参数:

参数名

参数类型

必填

参数描述

value

Edge

滚动到的边缘位置。

scrollPage

scrollPage(value: { next: boolean, direction?: Axis }): void

滚动到下一页或者上一页。

参数:

参数名

参数类型

必填

参数描述

next

boolean

是否向下翻页。true表示向下翻页,false表示向上翻页。

direction(deprecated)

Axis

设置滚动方向为水平或竖直方向。

从API version 9开始废弃

currentOffset

currentOffset(): { xOffset: number, yOffset: number }

返回当前的滚动偏移量。

返回值

类型

描述

{

xOffset: number,

yOffset: number

}

xOffset: 水平滑动偏移;

yOffset: 竖直滑动偏移。

说明:

返回值单位为vp。

scrollToIndex

scrollToIndex(value: number): void

滑动到指定Index。

NOTE

仅支持Grid、List组件。

参数:

参数名

参数类型

必填

参数描述

value

number

要滑动到的列表项在列表中的索引值。

scrollBy9+

scrollBy(dx: Length, dy: Length): void

滑动指定距离。

NOTE

支持Scroll、List、Grid、WaterFlow组件

参数:

参数名

参数类型

必填

参数描述

dx

Length

水平方向滚动距离,不支持百分比形式。

dy

Length

竖直方向滚动距离,不支持百分比形式。

三、示例

代码

// xxx.ets
@Entry
@Component
struct ScrollExample {scroller: Scroller = new Scroller()private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]build() {Stack({ alignContent: Alignment.TopStart }) {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%')}.scrollable(ScrollDirection.Vertical)  // 滚动方向纵向.scrollBar(BarState.On)  // 滚动条常驻显示.scrollBarColor(Color.Gray)  // 滚动条颜色.scrollBarWidth(10) // 滚动条宽度.edgeEffect(EdgeEffect.None).onScroll((xOffset: number, yOffset: number) => {console.info(xOffset + ' ' + yOffset)}).onScrollEdge((side: Edge) => {console.info('To the edge')}).onScrollEnd(() => {console.info('Scroll Stop')})Button('scroll 150').onClick(() => { // 点击后下滑指定距离150.0vpthis.scroller.scrollBy(0,150)}).margin({ top: 10, left: 20 })Button('scroll 100').onClick(() => { // 点击后滑动到指定位置,即下滑100.0vp的距离this.scroller.scrollTo({ xOffset: 0, yOffset: this.scroller.currentOffset().yOffset + 100 })}).margin({ top: 60, left: 20 })Button('back top').onClick(() => { // 点击后回到顶部this.scroller.scrollEdge(Edge.Top)}).margin({ top: 110, left: 20 })Button('next page').onClick(() => { // 点击后滑到下一页this.scroller.scrollPage({ next: true })}).margin({ top: 170, left: 20 })}.width('100%').height('100%').backgroundColor(0xDCDCDC)}
}

图例

你有时间常去我家看看我在这里谢谢你啦...

我家地址:亚丁号

最后送大家一首诗:

山高路远坑深,
大军纵横驰奔,

谁敢横刀立马?
惟有点赞加关注大军。

相关文章:

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Scroll容器组件 可滚动的容器组件,当子组件的布局尺寸超过父组件…...

FreeRTOS操作系统学习——FreeRTOS工程创建

FreeROTS工程创建 详细步骤 如无特殊情况,大部人都要配置为外部高速时钟 另外,本实验使用了FreeRTOS,FreeRTOS的时基使用的是Systick,而 STM32CubeMX中默认的HAL库时基也是Systick,为了避免可能的冲突,最…...

6. 使用 Spring Boot进行开发(Developing with Spring Boot)

6. 使用 Spring Boot进行开发(Developing with Spring Boot) 本节详细介绍了如何使用Spring Boot。它涵盖考虑构建系统、自动配置以及如何运行应用程序等主题。我们还介绍一些 Spring Boot 最新做法。虽然 Spring Boot 没有什么特别之处(它只…...

IP地址工具,判断IP是否在指定范围内(支持ipv6)

常用方法,判断一个ip是否在指定的ip范围内,范围可能包括起始ip范围或者掩码形式,无其它依赖, package com.yk.ip;import java.math.BigInteger; import java.net.InetAddress; import java.net.UnknownHostException; import jav…...

Redis 之六:Redis 的哨兵模式(Sentinel)

Redis 哨兵(Sentinel)模式是一种高可用性解决方案,用于监控和自动故障转移的集群系统。 在 Redis Sentinel 架构中,哨兵是一组运行在特殊模式下的 Redis 进程,它们可以监控一个或多个主从复制结构中的 Redis 主服务器以…...

总线要点笔记

1. AXI/AHB/APB差异 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance Bus) 高级高性能总线 ASB (Advanced System Bus) 高级系统总线 APB (Advanced Peripheral Bus) 高级外围总线 AXI (Advanced eXtensible Interface) …...

RK3566 linux iperf网络测试

一、开发环境 系统:buildroot; 在Linux目标板和Windows PC上运行iperf进行测试; 二、调试 1、查询目标板上的iperf 使用终端助手连接目标板,然后输入命令查询iperf的版本: rootrk3566-buildroot:~# iperf -v iperf version …...

【无标题】计算机主要应用于哪些领域

科学计算(或称为数值计算)、数据处理(信息管理)、辅助工程、生产自动化、人工智能。1、科学计算(或称为数值计算):早期的计算机主要用于科学计算。目前,科学计算仍然是计算机应用的一…...

力扣精选算法100道——颜色分类(双指针和三指针俩种方法解决此题)

目录 🚩了解题意 🚩算法分析 第一种方法:双指针 🚩代码实现一 第二种方法:三指针 🚩代码实现二 🚩了解题意 本题将整数0,1,2代表红白篮,nums中的整数并…...

基于Java SSM springboot+VUE+redis实现的前后端分类版网上商城项目

基于Java SSM springbootVUEredis实现的前后端分类版网上商城项目 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐…...

01——什么是人工智能

学习形式分类 1) 有监督学习 有监督学习(supervised learning),需要你事先需要准备好要输入数据(训练样本)与真实的输出结果(参考答案),然后通过计算机的学习得到一个预测模型,再用…...

AI国漫女神这样画!傻瓜式的云端SD(stable diffusion)部署教程 - 白嫖4090、无需代码、一键启动

一、前言:为什么要云端部署stable diffusion? 前段时间一直在用midjourney进行Ai绘画,但是发现Midjourney绘画的限制有点多很死板,很多图都不能画,懂得都懂。想使用Midjourney可以看这个:( 【推荐】Midjo…...

消息队列、共享内存、信号灯

IPC(Inter-Process Communication,进程间通信) 常用的 IPC 对象包括管道(pipe)、消息队列(message queue)、信号量(semaphore)和共享内存(shared memory&…...

K次取反后最大化的数组和 加油站 分发糖果 柠檬水找零

1005.K次取反后最大化的数组和 力扣题目链接(opens new window) 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。&a…...

Standoff: 独特的基于真实商业基础架构的网络战

Standoff 网络战通常每年进行两次(5 月和 11 月)。该公共活动的核心是由多个良心黑客团队(也称为威胁研究团队、白帽队或红队)对虚拟地区的基础架构进行系列攻击。 下一届 Standoff 将在 2024 年 5 月 23 日至 26 日举行的 Posi…...

如何成为fpga工程师

FPGA的应用领域非常的广,尤其再人工智能,大数据,云计算等等方向非常吃香。加上国家这两年的政策支持,整个芯片行业相比较其他的传统行业来说会好很多,总之前景是光明的,道路是曲折的,想要在人才…...

基础算法(二)#蓝桥杯

文章目录 8、双指针8.1、挑选子串8.2、聪明的小羊肖恩8.3、神奇的数组 9、二分9.1、跳石头9.2、可凑成的最大花朵数9.3、最大通过数9.4、妮妮的月饼广场9.5、基德的神秘冒险9.6、体育健将 10、倍增10.1、快速幂10.2、最近公共祖先LCA查询10.3、理想之城10.4、数的变换 8、双指针…...

运筹学_1.1.4 线性规划问题-解的概念

1.1.4 线性规划问题-解的概念 一、可行解与最优解二、基的概念三、基变量、基向量;非基变量、非基向量;基解、基可行解;四、最优解与可行解、基可行解的关系五、用例题(枚举法)巩固基解、基可行解、最优解三个概念1、例…...

物联网主机:为智能交通赋能

物联网(IoT)技术的发展为智能交通领域带来了许多创新的解决方案。而在物联网应用中,物联网主机起着关键的作用。本文将为大家介绍一款名为E6000的物联网主机,它是一种多协议、多接口的物联网主机,为智能交通系统的建设…...

「Vue3系列」Vue3简介及安装

文章目录 一、Vue3简介二、Vue3安装三、Vue3应用案例四、package.json详解五、相关链接 一、Vue3简介 Vue3是Vue.js框架的第三个主要版本,于2020年9月18日发布,代号为“One Piece”。Vue3在性能、体积、TypeScript支持、API设计等方面都有显著的提升和改…...

2026年京东云OpenClaw/Hermes Agent配置Token Plan环境搭建指南

2026年京东云OpenClaw/Hermes Agent配置Token Plan环境搭建指南。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...

TMS320VC5502PGF300:TI TMS320C55x系列定点DSP,300MHz,176-LQFP封装

TMS320VC5502PGF300:C55x低功耗DSP的300MHz经典音频处理方案在语音识别、音频编解码和通信基带处理等实时信号处理应用中,处理器的能效比(单位功耗下的算力)往往是系统设计的核心约束。高性能处理器虽然算力强劲,但较高…...

PowerBI主题模板完整指南:35个JSON模板快速打造专业报表

PowerBI主题模板完整指南:35个JSON模板快速打造专业报表 【免费下载链接】PowerBI-ThemeTemplates Snippets for assembling Power BI Themes 项目地址: https://gitcode.com/gh_mirrors/po/PowerBI-ThemeTemplates 还在为PowerBI报表的单调外观而烦恼吗&…...

2026亲测:专业AI智能降重工具选这款就对了

2026 年降 AIGC 工具已经从“基础语义改写”进化为多维度智能优化系统,核心评测指标涵盖 AI 痕迹清除精准度、学术表达一致性、格式结构完整性、长段落逻辑流畅性、降重适配范围以及高校检测合规性。本次测评覆盖 8 款主流工具,测试内容包括中英文论文处…...

CANN 模型转换与适配:从 PyTorch 到 Ascend OM 的完整指南

模型转换是昇腾落地的第一道坎。不管你用 PyTorch、TensorFlow 还是 MindSpore,最终都要变成 Ascend 的 .om 模型才能在 NPU 上跑。 这篇文章讲清楚:模型转换的完整流程、常见问题和优化技巧。 为什么需要模型转换? 昇腾 NPU 不能直接运行 Py…...

丹麦语语音合成总不“像真人”?揭秘ElevenLabs最新v3.2引擎中未公开的3个丹麦语重音标记开关,限前200名开发者速查

更多请点击: https://intelliparadigm.com 第一章:丹麦语语音合成的“真人感”困局本质 丹麦语语音合成长期面临“真人感”缺失的核心挑战,其根源并非单纯的数据量不足或模型容量有限,而是深植于该语言独特的音系结构与韵律特征之…...

自媒体矩阵工具选型避坑!多个平台发布指南,新手也能选对工具

做自媒体这事吧,光靠一个账号,很多时候确实不太容易把流量做起来,所以大多数人,慢慢就会去做多平台、多账号这种矩阵。可问题也很现实,账号一多,平台一散,人就容易被各种切换后台、重复发内容、…...

AD23新手必看:从画完PCB到嘉立创成功下单Gerber,保姆级避坑指南

AD23新手必看:从画完PCB到嘉立创成功下单Gerber,保姆级避坑指南 第一次用Altium Designer 23完成PCB设计后,面对Gerber文件导出和嘉立创下单的复杂流程,很多新手都会感到手足无措。本文将从实际经验出发,带你一步步避开…...

1993-2025年《中国汽车工业年鉴》Excel/PDF格式

一、资源介绍图片今日数据:《中国汽车工业年鉴》1993~2025《中国汽车工业年鉴》汇聚全国汽车行业最新最全的数据资讯。从宏观经济指标到微观企业动态,从整车产销到零部件配套,从燃油车到新能源汽车,每一页都记录着中国汽车工业发展…...

别再只会点灯了!用ESP8266+Blinker做个远程浇花器,附完整代码和手机App配置

从远程点灯到智能浇花:用ESP8266Blinker打造阳台植物管家 清晨的阳光透过窗帘洒进来,你躺在床上用手机轻轻一点,阳台上的花草便开始了自动灌溉——这不是科幻电影的场景,而是每个物联网爱好者都能实现的智能生活小确幸。对于已经…...