关于鸿蒙开发中滚动容器Scroll的介绍

news/2024/9/23 7:24:56/

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

Scroll的核心用法

用法说明:

  1. Scroll设置尺寸
  2. 设置溢出的子组件【只支持一个子组件
  3. 滚动方向:支持横向和纵向,默认纵向
Scroll(){// 只支持一个子组件Column(){// 内容放在内部// 尺寸超过Scroll即可滚动}
}
.width('100%')
.height(200)
.scrollable(ScrollDirection.XXX)

scrollable(value: ScrollDirection) 

设置滚动方向。

取值:

  • 纵向:ScrollDirection.Vertical【默认】
  • 横向:ScrollDirection.Horizontal
  • 不可滚动:ScrollDirection.None

Scroll的常见属性

名称参数类型描述
scrollableScrollDirection

设置滚动方向

  • 纵向:ScrollDirection.Vertical【默认】
  • 横向:ScrollDirection.Horizontal
scrollBarBarState

设置滚动条状态

  • 不显示:BarState.Off
  • 常驻显示:BarState.On
  • 按需显示【触摸时显示,2s后消失】:BarState.Auto【默认】
scrollBarColorstring
number
Color

设置滚动条的颜色

默认值:'#182431'(40%不透明度)

scrollBarWidthstring
number

设置滚动条的宽度

默认值:4

单位:vp

edgeEffectvalue:EdgeEffect

设置边缘滑动效果

  • 无效果:EdgeEffect.None
  • 弹簧:EdgeEffect.Spring
  • 阴影:EdgeEffect.Fade

Scroll的控制器

核心步骤:

实例化 Scroller 的控制器

绑定给 Scroll 组件

控制器的方法 控制滚动,控制器属性 获取滚动距离。

struct ScrollDemo {scroller: Scroller = new Scroller()build() {Column() {Scroll(this.scroller) { ... }Row() {Button('返回顶部').onClick(()=>{this.scroller.scrollEdge(Edge.Top)})Button('获取滚动距离').onClick(()=>{const x = this.scroller.currentOffset().xOffsetconst y = this.scroller.currentOffset().yOffsetAlertDialog.show({message:`x:${x},y:${y}`})})}}}
}

Scroll的事件

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

onScroll

语法:onScroll(event: (xOffset: number, yOffset: number) => void)
Scroll(){// 内容
}
.onScroll((x,y)=>{//滚动时 一直触发// 可以结合 scroller的currentOffset方法 获取滚动距离
})
触发该事件的条件
  1. 滚动组件触发滚动时触发,支持键鼠操作等其他触发滚动的输入设置。
  2. 通过滚动控制器API接口调用。
  3. 越界回弹。

从API version12开始废弃不再使用,推荐使用onWillScroll事件替代。

onWillScroll

滚动事件回调,Scroll滚动前触发。

语法:onWillScroll(handler: ScrollOnWillScrollCallback)
触发该事件的条件
  1. 滚动组件触发滚动时触发,支持键鼠操作等其他触发滚动的输入设置。
  2. 通过滚动控制器API接口调用。
  3. 越界回弹。
ScrollOnWillScrollCallback的取值
参数名类型必填说明
xOffsetnumber

每帧滚动时水平方向的偏移量,Scroll中的内容向左滚动时偏移量为正,向右滚动时偏移量为负。

单位:vp

yOffsetnumber

每帧滚动时竖直方向的偏移量,Scroll中的内容向上滚动时偏移量为正,向下滚动时偏移量为负。

单位:vp

scrollStateScrollState

当前滚动状态

scrollSourceScrollSource当前滚动操作来源
ScrollState枚举说明
名称枚举值描述
ldle0空闲状态。滚动状态回归空闲时触发,控制器提供的无动画方法控制滚动时触发。
Scroll1滚动状态。手指拖动List,拖动滚动条和滚动鼠标滚轮时触发。
Fling2惯性滚动状态。动画控制的滚动都会触发。包括快速滑动松手后的惯性滚动,划到边缘回弹的滚动,快速拖动内置滚动条松手后的惯性滚动,使用滚动控制器提供的带动画的方法控制的滚动。
ScrollSource枚举说明
名称枚举值描述
DRAG0拖拽事件
FLING1拖拽结束之后的惯性滑动
EDGE_EFFECT2EdgeEffect.Spring的边缘滚动效果
OTHER_USER_INPUT3除拖拽外的其他用户输入,如鼠标滚轮、键盘事件等
SCROLL_BAR4滚动条的拖拽事件
SCROLL_BAR_FLING5滚动条拖拽结束后的带速度的惯性滑动
SCROLLER6Scroller的不带动效方法
SCROLLER_ANIMATION7Scroller的带动效方法


http://www.ppmy.cn/news/1510606.html

相关文章

解析 Vue 中的app.version、 app.provide 与 app.runWithContext :原理、应用与实例剖析

目录 app.provide app.runWithContext ​​​​​​​app.version 非 VIP 用户能够通过积分下载博文资源 app.provide 在 Vue 3.0 中,app.provide充当着在应用层级提供全局共享数据或者服务的关键角色。 app.provide(key, value) 这一方法接收两个关键参数,其中 …

13、14代CPU故障迎来结局,intel或将卖大楼了

AMD 本应该在上个月就发布的锐龙 9000 系列,终于在 8 月 8 日正式上市了。 新一代的 Ryzen 9000 尽管在性能上属于中规中矩的常规迭代,但是因为 IPC 的进步和先进工艺的加持下,积热问题带来了极大的改善。 相较于 AMD 这边的春风得意&#x…

JS UI库DHTMLX Suite v8.4全新发布——图表、网格组件等API全面升级

DHTMLX UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。DHTMLX JS UI 组件可用于任何服务器端技术:PHP、Java、ASP.NET、Ruby、Grails、ColdFusion、Pyt…

笔记 5 : 彭老师课本第 5 章 , 开始代码编程

(49)大纲: (50) 系统: (51) 学习路线: (52)该款 soc 的内存布局: 细化的 SFR 地址空间 : (53) soc…

使用 Vue 官方脚手架初始化 Vue3 项目

Vite 官网:https://cn.vitejs.dev/ Vue 官网:https://vuejs.org/ Vue 官方文档:https://cn.vuejs.org/guide/introduction.html Element Plus 官网:https://element-plus.org/ Tailwind CSS 官网:https://tailwindcss.…

坐牢第二十七天(聊天室)

基于UDP的网络聊天室 一.项目需求: 1.如果有用户登录,其他用户可以收到这个人的登录信息 2.如果有人发送信息,其他用户可以收到这个人的群聊信息 3.如果有人下线,其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息…

liblzma库Android平台编译

1.下载源码: git clone https://github.com/tukaani-project/xz.git --recursive 2.配置交叉编译环境: 生成Android平台makefile export ANDROID_API=25 export ANDROID_NDK=/opt/aarch64-darwin-android export ANDROID_NDK_REVISION=r25b export AR=/opt/aarch64-darwin-a…

QML基础学习

QML学习 一、基础知识 一、基础知识 QML 的文件名首字母要大写,否则找不到文件 QML文件名作为组件对象名 alias 为属性取的别名,可以在其它地方实例化该组件时,更改其对应属性的值 implicitWidth/Height一般用在可重用控件,可以理解为控件…