鸿蒙笔记--Scroll

        这一节了解一下Scroll控件,在鸿蒙(HarmonyOS)开发中,Scroll控件是一个重要的可滚动容器组件,它允许在子组件的布局尺寸超过父组件尺寸时提供滚动功能。

scrollable
含义:控制Scroll组件的滚动方向。
可选值:
ScrollDirection.Vertical:垂直滚动(默认值)。
ScrollDirection.Horizontal:水平滚动。

scrollBar:
含义:设置滚动条的状态。
可选值:
BarState.Auto:自动显示滚动条(默认值)。
BarState.On:始终显示滚动条。
BarState.Off:始终不显示滚动条。

scrollBarColor
含义:设置滚动条的颜色。
scrollBarWidth:
含义:设置滚动条的宽度。
edgeEffect
含义:设置滚动边缘的效果。
可选值:
EdgeEffect.None:无效果。
EdgeEffect.Spring:弹簧效果。
EdgeEffect.Fade:阴影效果。

enableScrollInteraction(API 10+):
含义:设置是否支持滚动手势。
可选值:
true:支持滚动手势(默认值)。
false:不支持滚动手势,但不影响通过控制器接口进行的滚动。
friction(API 10+):
含义:设置滚动时的摩擦力,影响滚动的速度和惯性。

栗子:

@Entry @Component struct ArkUITest {build() {Scroll() {Text('Text1').fontSize(26).size({width: 180, height: 40}) // 子组件的高度小于Scroll高度,不会触发滚动.backgroundColor('#aabbcc')}.width('100%').height(100).backgroundColor(Color.Pink)}
}
@Entry @Component struct ArkUITest {build() {Scroll() {// Scroll没有设置滚动方向,默认竖直方向滚动Column() {Text('Text1').fontSize(26).size({width: 180, height: 90}).backgroundColor('#aabbcc')Text('Text2').fontSize(26).size({width: 180, height: 90}).backgroundColor('#bbccaa')Text('Text3').fontSize(26).size({width: 180, height: 90}).backgroundColor('#ccaabb')Text('Text4').fontSize(26).size({width: 180, height: 90}).backgroundColor('#abcabc')}.width('100%')}.width(230).height(200).backgroundColor(Color.Pink)}
}

控制器:
可以通过创建Scroller的实例并将其绑定给Scroll组件来控制滚动。
控制器提供了多种方法来控制滚动,如scrollTo(滚动到指定位置)、scrollEdge(滚动到容器边缘)、scrollPage(滚动到下一页或上一页)等。
滚动事件:
onScroll(API小于12时使用):滚动事件回调,返回滚动时水平、竖直方向偏移量。
onWillScroll(API 12及以上时使用):滚动回调,返回滚动后的偏移量。

栗子:

@Entry
@Component
struct ScrollWithController {scroller: Scroller = new Scroller();@State isActive: boolean = false;build() {Column() {Scroll(this.scroller) {Column() {// 放置多个子组件Text('Text1').fontSize(26).size({width: 180, height: 120}).backgroundColor('#aabbcc')Text('Text2').fontSize(26).size({width: 180, height: 120}).backgroundColor('#bbccaa')Text('Text3').fontSize(26).size({width: 180, height: 120}).backgroundColor('#ccaabb')Text('Text4').fontSize(26).size({width: 180, height: 120}).backgroundColor('#abcabc')Text('Text5').fontSize(26).size({width: 180, height: 120}).backgroundColor('#abcabc')Text('Text6').fontSize(26).size({width: 180, height: 120}).backgroundColor('#abcabc')Text('Text7').fontSize(26).size({width: 180, height: 120}).backgroundColor('#abcabc')Text('Text8').fontSize(26).size({width: 180, height: 120}).backgroundColor('#aabbcc')Text('Text9').fontSize(26).size({width: 180, height: 120}).backgroundColor('#bbccaa')Text('Text10').fontSize(26).size({width: 180, height: 120}).backgroundColor('#ccaabb')}}.scrollBar(BarState.On).scrollBarWidth(5).scrollBarColor(Color.Black).edgeEffect(EdgeEffect.Fade).onWillScroll(() => {const yOffset = this.scroller.currentOffset().yOffset;if (yOffset >= 400) {this.isActive = true;} else {this.isActive = false;}}).width('100%').height('100%');if (this.isActive) {Row({ space: 10 }) {Image($r('app.media.ic_jd_rocket')).height(30).width(30).onClick(() => {this.scroller.scrollEdge(Edge.Top);});}.padding(5).width(40).height(40).borderRadius(20).backgroundColor(Color.White).margin({ bottom: 90, right: 30 });}}}
}

分析:这个示例中,我们创建了一个Scroll组件,并通过控制器来控制滚动。同时,我们还使用了onWillScroll事件来监听滚动偏移量,并根据偏移量来显示或隐藏一个返回顶部的按钮。当用户点击返回顶部按钮时,控制器会将Scroll组件滚动到顶部。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WordPress 2024主题实例镜像

目录 隐藏 1 WordPress 2024主题实例镜像启用的插件 2 WordPress 2024主题实例镜像截图 WordPress 2024主题实例镜像启用的插件 WordPress 2024主题实例镜像启用了2024主题,配置了: Akismet 反垃圾评论插件 Admin Notices Manager仪表盘通知隐藏…

Java 基于 SpringBoot+Vue 的水果在线销售系统开发(附源码,文档)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

如何用Python代码计算文件的SHA256?

以下是使用 Python 计算文件的 SHA256 哈希值的例子。代码的功能是利用Python代码计算文件的SHA256,同时将结果打印到屏幕和文件。 import hashlib import sysdef calculate_sha256(file_path):sha256_hash hashlib.sha256()with open(file_path, "rb")…

腾讯云nginx SSL证书配置

本章教程,记录在使用腾讯云域名nginx证书配置SSL配置过程。 一、nginx配置 域名和证书,替换成自己的即可。证书文件可以自定义路径位置。服务器安全组或者防火墙需要开放80和443端口。 server {#SSL 默认访问端口号为 443listen 443 ssl; #请填写绑定证书的域名server_name c…

【双十一特惠】腾讯云省钱攻略:如何智取云计算资源

前言 双十一不仅是购物的狂欢节,对于云计算用户来说,更是一个节省成本的绝佳时机。腾讯云,作为国内领先的云计算服务商,每年双十一都会推出一系列优惠活动。本文将为您揭开如何在这个购物节中,最大化利用腾讯云的优惠…

【前端】Svelte:响应性声明

Svelte 的响应性声明机制简化了动态更新 UI 的过程,让开发者不需要手动追踪数据变化。通过 $ 前缀与响应式声明语法,Svelte 能够自动追踪依赖关系,实现数据变化时的自动重新渲染。在本教程中,我们将详细探讨 Svelte 的响应性声明机…

项目总结(3)

一.输入框集合 QLineEdit是一个单行文本编辑控件。 使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。 通过改变QLineEdit的 echoMode() ,可以设置其属性,比如以密码的形式输入。 文本的长度可…

使用 Redux 在 Flutter鸿蒙next 中实现状态管理

在 Flutter 中进行状态管理是开发应用程序时的一个关键问题。Flutter 提供了多种解决方案来管理应用的状态,其中 Redux 是一种广泛使用且功能强大的状态管理库。虽然 Redux 最初是为 JavaScript 和 React 设计的,但它的核心概念非常适用于 Flutter&#…

032集——圆转多段线(Circle to Polyline)(CAD—C#二次开发入门)

CAD中圆可转为带有凸度的多段线以方便后期数据计算、处理&#xff0c;效果如下&#xff1a; 白色为圆&#xff0c;红色为转换后的多段线&#xff08;为区分&#xff0c;已手工偏移多段线&#xff09; public static void XX(){var curves Z.db.SelectEntities<Entity>…

【极客兔兔-Web框架Gee详解】Day2 上下文Context

文章目录 一、框架结构二、设计上下文(Context):day2-context/gee/context.go1. 设计Context必要性1.1 接口粒度过细:1.2 缺乏扩展性:2. 代码3. 优势三、路由(Router): day2-context/gee/router.go四、框架入口:day2-context/gee/gee.go1. 代码五、框架使用: day2-context/m…

VSCode设置长行自动折行

有时候一行代码或者是注释会比较长&#xff0c;为了方便阅读&#xff0c;习惯让它折行显示&#xff1b;而VSCode在默认情况下&#xff0c;是不会自动折行的&#xff0c;这不利于阅读&#xff0c;我们可以通过设置来达到折行的效果。 具体操作步骤&#xff1a; 打开左下角的管…

HTB:Sightless[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 继续使用nmap对靶机开放的TCP端口进行脚本、服务扫描 首先尝试对靶机FTP服务进行匿名登录 使用curl访问靶机80端口 使用浏览器可以直接访问该域名 使用浏览器直接访问该子域 Getshell 横向移动 查…

Oracle视频基础1.4.4练习

1.4.4 [dbs] 删干净上次创建的bbk ll rm -f *dbf ll rm -f spfilebbk.ora clear ll创建bbk的pfile&#xff0c;准备对应的目录 ll strings spfilewilson.ora | more strings spfilewilson.ora > initbbk.ora :%s/wilson/bbk :%s/*\.//g :wq ll vi initbbk.ora####### 创…

【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--角色可访问接口管理

咱们继续来编写孢子记账的简易权限&#xff0c;这篇文章中我们将编写角色可访问接口的管理API&#xff0c;同样我不会把完整的代码全都列出来&#xff0c;只会列出部分代码&#xff0c;其余代码我希望大家能自己手动编写&#xff0c;然后对比项目代码。废话不多说&#xff0c;开…

Monetico: 文本到图像合成的革命性变革

在人工智能和创意技术领域&#xff0c;Collov-Labs 推出了具有开创性的文本到图像合成模型 Monetico&#xff0c;它将彻底改变我们创建和可视化数字内容的方式。Monetico 是著名的 Meissonic 模型的有效再现&#xff0c;它提供了一种独特且易于使用的方法&#xff0c;可根据文本…

一步步安装deeponet的详细教学

1.deepoent官网如下&#xff1a; https://github.com/lululxvi/deeponet 需要下载依赖 1.python3 2.DeepXDE&#xff08;这里安装DeepXDE<0.11.2,这个最方便&#xff09; Optional: For CNN, install Matlab and TensorFlow 1; for Seq2Seq, install PyTorch&#xff0…

Error creating bean with name ‘reactiveElasticsearchClient

程序报错&#xff1a; org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘reactiveElasticsearchClient’ defined in class path resource [org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestC…

海康私有化视频平台EasyCVR视频分析设备平台流媒体协议RTMP、HTTP-FLV、HLS的简单对比

在当今的数字化世界中&#xff0c;视频流协议的选择对于确保流畅、高效的视频传输至关重要。随着互联网技术的快速发展&#xff0c;直播和视频点播服务已经成为人们日常生活中不可或缺的一部分。无论是安防监控、在线教育、远程会议还是娱乐直播&#xff0c;用户对于视频流的实…

Halcon 循环画框

read_image (Image, fabrik) * 循环画框 左键开始画 中间键结束 while (1) get_mbutton (3600, dummy, dummy, Button) if(Button ! 2 and Button ! 4) * 循环画框 draw_rectangle1 (3600, Row1, Column1, Row2, Column2) …

Java多线程详解⑥(全程干货!!!)死锁 || 构成死锁的条件 || 死锁总结 || Java标准库的线程安全类

这里是Themberfue 在上一节中&#xff0c;我们介绍了线程安全问题&#xff0c;对锁的概念以及使用 在本节中&#xff0c;进入 "死锁" 的概念以及如何产生 "死锁" 死锁 一个线程&#xff0c;一把锁&#xff0c;同时加两把锁 要想进入死锁的介绍和概念&a…