HarmonyOS 用List组件实现组合列表项

news2024/11/15 6:43:01

界面分析:
由于整体UX设计图符合从上至下的布局,所以可以采用Column组件作为外层容器

简介:

  1. 最上方的标题可以使用Text组件进行加载渲染
  2. 中间的Banner图和简介分别可以使用Image组件和Text组件进行加载
  3. 最后一部分可以看作是一个列表,它由若干个列表项ListItem构成

在这里插入图片描述

实现标题、Banner、简介:

  1. 标题栏可以采用Text组件进行加载渲染
1. Column() {
2. Text('标题')
3. .fontFamily('HarmonyHeiTi-Bold')
4. .fontSize(24)
5. .fontColor(Color.Black)
6. .textAlign(TextAlign.Start)
7. .lineHeight(33)
8. .fontWeight(700)
9. .width('100%')
10. }
11. .padding({ top: 12, right: 16, bottom: 12, left: 16})
12. .backgroundColor('#F1F3F5')
  1. 放入图片资源:./src/main/resources/base/media目录中
  2. 使用Image组件加载放入的Banner图片,设置其宽度百分百,并设置圆角。同时注意到banner图与上方的title间有19单位的空隙,与下方的组件有8单位的空隙
1. Image($r('app.media.yourpicture'))
2. .width('100%')
3. .borderRadius(16)
4. .margin({ top: 19, bottom: 8 })
  1. 简介的部分也可以采用Text组件来进行数据的渲染
1. Text('简介')
2. .fontFamily('HarmonyHeiTi')
3. .fontSize(14)
4. .fontColor('rgba(0,0,0,0.60)')
5. .fontWeight(400)
6. .textAlign(TextAlign.Start)
  1. 实现List的列表项
// @Component功能更加多样,有自己的生命周期,还能支持预览效果
// 而@Builder更加轻量,能满足基础的组件封装,性能更好,但是不支持预览

1. @Component
2. export struct Item {
3. build() {
4. Row(){

6. }
7. .width('100%')
8. .height(48)
9. .borderRadius(16)
10. .alignItems(VerticalAlign.Center)
11. .padding({ left: 12, right: 12 })
12. .backgroundColor('#F1F3F5')
13. }
14. }

  1. 导出数据接口
1. export struct Item {
2. @State navBarItem: NavBarItemType = {
3. order: '01',
4. title: '标题'
5. };
6. ...
7. }
  1. 实现序号
1. @Component
2. export struct Item {
3. ...

5. build() {
6. Row() {
7. Text(this.navBarItem.order)
8. .margin({ right: 6 })
9. .fontFamily('HarmonyHeiTi-Bold')
10. .fontSize(21)
11. .fontColor('#182431')
12. .textAlign(TextAlign.Start)
13. .lineHeight(22)
14. .fontWeight(700)
15. }
16. ...
17. }
18. }
  1. 实现标题
1. @Component
2. export struct Item {
3. ...

5. build() {
6. Row() {
7. Text(this.navBarItem.order)
8. ...
9. Text(this.navBarItem.title)
10. .fontFamily('HarmonyHeiTi-Medium')
11. .fontSize(16)
12. .fontColor('#182431')
13. .textAlign(TextAlign.Start)
14. .lineHeight(22)
15. .fontWeight(500)
16. }

18. }
19. }
  1. 将指向下一页的图标放置于 ./src/main/resources/base/media目录下,并填充
1. @Component
2. export struct Item {
3. ...

5. build() {
6. Row() {
7. Text(this.navBarItem.order)
8. ...
9. Text(this.navBarItem.title)
10. ...
11. Blank()
12. Image($r('app.media.ic_arrow'))
13. .width(12)
14. .height(24)
15. }
16. ...
17. }
18. }

组合列表项:

  1. 定义数据集,在分栏Tab的首页进行定义
1. @State navBarList: NavBarItemType[] = [
2. { order: '01', title: '准备与学习' },
3. { order: '02', title: '构建应用' },
4. { order: '03', title: '应用测试' },
5. { order: '04', title: '上架' },
6. { order: '05', title: '运营增长' },
7. { order: '06', title: '商业变现' },
8. { order: '07', title: '更多' }
9. ];
  1. 循环渲染
1. List({ space: 12 }) {
2. ForEach(this.navBarList, (item: NavBarItemType, index: number) => {
3. ListItem() {
4. NavBarItem({ navBarItem: item })
5. }
6. .width('100%')
7. }, (item: NavBarItemType): string => item.title)
8. }
9. .width('100%')
10. .margin({ top: 24 })
  1. 在build()函数中,加入Scroll组件。可以解决当内容条数不足时,Scroll组件滚动时会出现空白区域的错误效果。edgeEffect用于设置边缘滑动效果,设置为EdgeEffect.Spring表示设置为弹性物理动效

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

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

相关文章

在PAI-DSW中连接Neo4J,并批量创建知识图谱

我在 阿里云DSW实例中安装并运行Neo4J 中提到过,由于PAI-DSW的专有网络配置不能确保百分之百成功,因而很难实现通过本地的浏览器登录在PAI-DSW中启动的Neo4J图数据库。 我当时想出的一个解决办法是使用./cypher-shell语句在命令行登录neo4j,…

工业5G路由器赋能户外组网远程监控及预警

随着物联网、大数据、云计算等技术的快速发展,工业领域对于远程监控、实时预警和数据传输的需求日益增长。特别是在户外复杂环境下,传统的有线网络组网方式面临着布线难度大、成本高、维护困难等问题。 工业5G路由器在户外组网远程监控预警应用基于高速…

Golang 并发控制模型

文章目录 Golang 并发控制模型一、使用 channel 通知实现并发控制1、无缓冲通道2、有缓冲通道 二、使用 sync 包中的 WaitGroup 实现并发控制1、sync.WaitGroup2、sync.Once 三、使用 Context 上下文实现并发控制1、简介2、context 包3、继承 context4、context 例子5、context…

基于springMVC的图书管理系统

进度终于来到了springMVC,下次估计就是springboot了,感觉每次开始新框架,环境都是大问题,项目一共敲四天,环境卡三天。总结一下这次碰到的问题和解决方法吧。 问题和解决方法 1、controller中return无法跳转到界面&a…

【安装】Linux Centos 或 Debian 离线安装指定版本MariaDB

【安装】Linux Centos 或 Debian 离线安装指定版本MariaDB 下载地址 https://mariadb.com/downloads/community/community-server/https://mirrors.aliyun.com/mariadb/yum/https://mariadb.com/downloads/community/community-server/ Download MariaDB Server - MariaDB.or…

NineData云原生智能数据管理平台新功能发布|2024年7月版

本月发布 12 项更新,其中性能优化 3 项、功能优化 8 项、安全性发布 1 项。 1. 性能优化 数据复制 - SQL Server 增量性能优化 调整读取和写入方式,让 SQL Server 增量复制的性能轻松达到 5000 RPS 以上。 数据复制 - Doris|SelectDB|StarRocks 性能优…

数据库原理之多表查询——使用Mysql进行内连接和外连接

作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:Idea 目录 1.内连接 1.1隐式内连接 1.1.1定义 1.1.2举例 1.1.3优缺点 1.2显式内连接 1.2.1定义 1.2.2举例 1.2.3优缺点 2.外连接 2.1左外连接 2.1.1定义 2.1.2举例 2.…

Creomagic 推出认知通信功能以应对电子战 (EW) 威胁

新时代的软件定义无线电 (SDR) 技术可以在电子战和竞争频谱环境中自主维护可靠的网络。 最近的全球冲突凸显了现代战场上战术通信面临的严峻挑战。随着自主部队的日益普及,战场感知变得比以往任何时候都更加先进,需要大量信息传输和同步。在战场上传输关…

【OpenCV C++20 学习笔记】腐蚀和膨胀

腐蚀和膨胀 形态学原理膨胀腐蚀 代码实现膨胀函数腐蚀函数运行结果 形态学原理 腐蚀和膨胀通常有以下用途: 去除噪音分离或合并图像中的元素找出图片上的强度的极大值区域和极小值区域 以下图作为原始图片: 膨胀 用核 B B B来扫描图像 A A A&#xff…

Python数值计算(12)——线性插值

1. 概述 插值是根据已知的数据序列(可以理解为你坐标中一系列离散的点),找到其中的规律,然后根据找到的这个规律,来对其中尚未有数据记录的点进行数值估计的方法。最简单直观的一种插值方式是线性插值,它是…

MuseTalk - 数字人唇部同步

文章目录 一、关于 MuseTalk概览新闻模型案例待办事项:第三方集成 二、安装构建环境mmlab 软件包下载 ffmpeg-static下载权重 三、快速入门推理使用 bbox_shift 以获得可调整的结果结合 MuseV 和 MuseTalk🆕实时推理实时推理注意事项 四、其它致谢限制引…

Taro学习记录

一、安装taro-cli 二、项目文件 三、项目搭建 1、Eslint配置 在项目生成的 .eslintrc 中进行配置 {"extends": ["taro/react"], //一个配置文件,可以被基础配置中的已启用的规则继承"parser": "babel/eslint-parser…

1688中国站获得工厂档案信息 API

公共参数 名称类型必须描述keyString是免费申请调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认y…

【动态规划-最大子段和】力扣1191. K 次串联后最大子数组之和

给定一个整数数组 arr 和一个整数 k ,通过重复 k 次来修改数组。 例如,如果 arr [1, 2] , k 3 ,那么修改后的数组将是 [1, 2, 1, 2, 1, 2] 。 返回修改后的数组中的最大的子数组之和。注意,子数组长度可以是 0&…

Delphi5实现多窗体

效果图 新建窗体 窗体的显现 procedure TForm2.btn2Click(Sender: TObject); beginForm1.Show;Form2.Hide; end;第一个窗体完整代码 注意引用第二个窗体 unit Unit1;interfaceusesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Dialogs, Forms,Form…

《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端

引出 《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端 第3集:2000年代/数据库分型及国产数据库开端 y2k问题 千年虫,又叫做“计算机2000年问题”“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K]”。是指在某些使用了计算机…

ESP8266 完结日志 2024/8/2 23:50

呼!经历这么长 的时间终于完工了, 从零开始一步一步走过来,还是有一丢丢成就感的 功能: 上传文件 控制引脚 获取信息 重启设备 清空flash 期间接触:web开发 uni-app开发 c开发 python 开发 MQTT AI很棒,棒到我任何问题都想问AI, 甚至一丢丢逻辑下的操作都期盼AI解决. 抖音也…

yolov5的学习part1

还是基础的anoconda,在opencv的时候就已经安装过了 此视频疑似在2020年底录制,因为他安装anaconda使用如下代码 bash ~/Downloads/Anaconda3-2020.07-Linux-x86_64.sh 由于版本兼容问题,可能要mini conda PASCAL VOC PASCAL VOC挑战赛在…

Node.js(6)——npm软件包管理

npm npm是Node.js标准的软件包管理器。 使用: 初始化清单文件:npm init-y(得到package.json文件,有则略过此命令)下载软件包:npm i 软件包名称使用软件包 示例: 初始状态下npm文件夹下只有server.js,下载软件包前看…

揭秘最“硬”的物质,你听说过神秘的“0”号元素吗?

“尽管我们还没有找到它,但这并不意味着它不存在。”——斯蒂芬威廉霍金 亲爱的朋友们,今天我们来探讨一个引人入胜的话题——宇宙中最坚硬的物质是什么?别急,这不是去健身房的邀请,而是一次探索宇宙奥秘的旅程。听说过神秘的“0”号元素吗?让我们一探究竟! 在浩瀚的宇…