鸿蒙仓颉语言开发实战教程:购物车页面

article/2025/6/7 15:26:20

大家上午好,仓颉语言商城应用的开发进程已经过半,不知道大家通过这一系列的教程对仓颉开发是否有了进一步的了解。今天要分享的购物车页面:

看到这个页面,我们首先要对它简单的分析一下。这个页面一共分为三部分,分别是导航栏、购物车列表和底部的结算栏。也能它们是column布局,那么怎么样让这三部分刚好撑满整个页面,有一个简单的办法:给导航栏和结算栏一个固定的高度,然后给List组件设置layoutWeight(1)属性即可。写一个简单的页面结构:

Column{Row{//导航栏}.width(100.percent).height(60)List{//购物车列表}.width(100.percent).layoutWeight(1)Row{//结算栏}.width(100.percent).height(45)
}
.width(100.percent)
.height(100.percent)

购物车列表

购物车列表毫无疑问使用List组件,今天的List组件比之前多了一些内容,就是店铺名字这部分的内容,我们使用List中的header来实现。

我首先写下header部分的内容,并自定义一个组件itemHead:

@Builder func itemHead(text:String) {Row{Text(text).fontSize(15).backgroundColor(Color.WHITE).padding(10)Image(@r(app.media.righticon)).height(18).width(18).objectFit(ImageFit.Contain).margin(left:-5)}.width(100.percent).height(35).alignItems(VerticalAlign.Center)
}

在List中使用这个组件,并传入参数,就是店铺的名字:

List(space:12) {ListItemGroup(ListItemGroupParams(header:{=>bind(this.itemHead,this)('幽蓝旗舰店')})){})
}

然后就是列表内容部分,循环列表内容我们只看其中一个就行了。

同样先把它简单的分析一下,大家可以把它分为两部分或者三部分,拆分开来就会比较简单了。

要注意的是这部分内容需要横向占满整个屏幕,我们同样可以使用layoutWeight来实现。

下面为大家贴上列表内容加上循环遍历的实现代码。仓颉Foreach写法比较不同,需要慢慢习惯:

ForEach(this.carList,itemGeneratorFunc:{item:CarItem, index: Int64 => ListItem {Row(8){Image(@r(app.media.unselect)).width(17).height(17)Image(item.getCover()).width(90).height(90).borderRadius(6)Column {Column(5){Text(item.getName()).fontSize(16).fontColor(Color.BLACK)Text('天蓝色,XL(180)').fontSize(14).fontColor(Color.GRAY).padding(4).backgroundColor(Color(241, 241, 241, alpha: 1.0)).borderRadius(4)}.alignItems(HorizontalAlign.Start)Row {Row{Text('¥').fontColor(Color.RED).fontSize(13)Text(item.getPrice()).fontSize(18).fontColor(Color.RED).fontWeight(FontWeight.Bold)}.alignItems(VerticalAlign.Bottom)Row (6){Text('-').fontColor(Color(74, 74, 74, alpha: 1.0)).fontSize(16)Text(item.getCount().toString()).fontSize(14).fontColor(Color.BLACK).padding(4).backgroundColor(Color(241, 241, 241, alpha: 1.0)).textAlign(TextAlign.Center).width(40).height(28).borderRadius(6)Text('+').fontColor(Color(74, 74, 74, alpha: 1.0)).fontSize(16)}.alignItems(VerticalAlign.Center)}.alignItems(VerticalAlign.Center).justifyContent(FlexAlign.SpaceBetween).width(100.percent)}.layoutWeight(1).alignItems(HorizontalAlign.Start).height(90).justifyContent(FlexAlign.SpaceBetween)}.width(100.percent).height(110)}})

结算栏

相比购物车列表,结算栏的内容就比较简单了,使用几个Row容器就能实现:

Row(6){Row(){Text('合计').fontSize(13).fontColor(Color.BLACK)Text('¥').fontColor(Color.RED).fontSize(13).margin(left:5)Text('0').fontSize(18).fontColor(Color.RED).fontWeight(FontWeight.Bold)}.alignItems(VerticalAlign.Bottom)Text('结算').fontColor(Color.WHITE).backgroundColor(Color.RED).width(100).height(38).borderRadius(6).textAlign(TextAlign.Center)}

以上就是购物车页面开发的内容分享,感谢阅读。#HarmonyOS语言##仓颉##购物#​


http://www.hkcw.cn/article/xqZEICcwYd.shtml

相关文章

Redisson单机模式

redisson调用unlock的过程 Redisson 是一个基于 Redis 的 Java 驻内存数据网格(In-Memory Data Grid)框架,提供了分布式和可扩展的数据结构和服务。Redisson 的 unlock 方法用于释放锁。下面是 unlock 方法的调用过程: 获取锁的状…

软件测试环境搭建与测试流程

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1.软件测试环境搭建 思考: 在什么条件下做软件测试?怎么做软件测试? 1.1 搭建测试环境前 确定测试目的 功能测试&#xff…

Go语言学习-->从零开始搭建环境

Go语言学习–>从零开始搭建环境 1 开发环境 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ windos 平台下载: 我这里下载1.22稳定版 双击下载好的.msi文件 修改安装…

Mac 芯片系列 安装cocoapod 教程

安装声明: 本人是在搭梯子的环境下安装成功,前提是必须安装好安装homebrew环境。 1.检测rudy的源 2.查看源(目的:检测rudy的源) gem sources - l 3.移除源(目的:移除rudy自带的源) gem sources --remove https://rubygems.org/ 4.更换源(目的:替换成国…

idea不识别lombok---实体类报没有getter方法

介绍 本篇文章,主要讲idea引入lombok后,在实体类中加注解Data,在项目启动的时候,编译不通过,报错xxx.java没有getXxxx()方法。 原因有以下几种 1. idea没有开启lombok插件 2. 使用idea-2023…

JavaWeb是什么?总结一下JavaWeb的体系

一:Maven 1.1 定义 不需要导入依赖,在配置文件描述配置信息,maven会自动导入 统一项目结构: 项目构建: 1.2 ideal集成 (1)maven配置 (2)创建maven项目 ‘ (3&…

MEMCPY引发的非对齐访问

目录 前言背景代码直接运行的现象问题原因解决办法 前言 1,memcpy在keil中是伪装成函数的C语言关键字,有可能会被优化为字对齐形式__rt_memcpy_w 2,编译到memcpy位置的时候,编译器会检查地址类型,如果两个指针都是4字…

CSS(2)

文章目录 Emmet语法快速生成HTML结构语法 Snipaste快速生成CSS样式语法快速格式化代码 快捷键(VScode)CSS 的复合选择器什么是复合选择器交集选择器后代选择器(重要)子选择器(重要)并集选择器(重要)**链接伪类选择器**focus伪类选…

AI+在线教育系统源码:开发智能化互动网校平台全流程详解

在数字化浪潮席卷各行各业的当下,教育行业也不例外。从最早的PPT网课,到今天“AI互动教学”深度融合的智能网校系统,在线教育平台的底层逻辑和技术架构已然发生翻天覆地的变化。今天,笔者将为正计划进入在线教育领域的创业者、产品…

Prj09--8088单板机C语言8253产生1KHz方波(1)

1.8253原理图 2.Deepseek给出的参考程序 #include <stdio.h> #include <conio.h> #include <dos.h>// 8253定时器端口定义 #define PORT_8253_CNT0 0x9000 // 计数器0地址 #define PORT_8253_CNT1 0x9001 // 计数器1地址 #define PORT_8253_CNT2 …

女儿回应48岁妈妈顺产得子 意外怀孕引发热议

女儿回应48岁妈妈顺产得子。近日,广东河源一位48岁的再婚妈妈怀孕7个月自己都没察觉,还以为是“绝经发福”了。她28岁的女儿透露,妈妈和现任丈夫相识仅40天就闪婚,已经共同生活了7年。此前医生曾诊断这位妈妈没有卵泡无法怀孕,没想到却意外怀上了。女儿最初心情复杂,但现…

js-day7

JS学习之旅-day7 1.事件流1.1 事件流与两个阶段说明1.2 事件捕获1.3 事件冒泡1.4 阻止1.5 解绑事件 2. 事件委托3. 其他事件3.1 页面加载事件3.2 页面滚动事件3.3 页面尺寸事件 4. 元素尺寸与位置 1.事件流 1.1 事件流与两个阶段说明 事件流指的是事件完整执行过程中的流动路…

【Typst】5.文档结构元素与函数

概述 本节介绍Typst文档的核心文档结构元素及其对应函数&#xff0c;还有函数的用法。通过本节你将可以更好的使用脚本创建和控制页面元素。 系列目录 1.Typst概述2.Typst标记语法和基础样式3.Typst脚本语法4.导入、包含和读取5.文档结构元素与函数6.布局函数 set语句和sho…

每日八股文6.3

每日八股-6.3 Mysql1.COUNT 作用于主键列和非主键列时&#xff0c;结果会有不同吗&#xff1f;2.MySQL 中的内连接&#xff08;INNER JOIN&#xff09;和外连接&#xff08;OUTER JOIN&#xff09;有什么主要的区别&#xff1f;3.能详细描述一下 MySQL 执行一条查询 SQL 语句的…

【Linux】pthread多线程同步

参考文章&#xff1a;https://blog.csdn.net/Alkaid2000/article/details/128121066 一、线程同步 线程的主要优势在于&#xff0c;能够通过全局变量来共享信息。不过&#xff0c;这种便携的共享是有代价的&#xff1b;必须确保多个线程不会同时修改同一变量&#xff0c;或者某…

Spring AOP:面向切面编程 详解代理模式

文章目录 AOP介绍什么是Spring AOP&#xff1f;快速入门SpringAop引入依赖Aop的优点 Spring Aop 的核心概念切点(Pointcut)连接点、通知切面通知类型PointCut注解切面优先级Order切点表达式executionwithinthistargetargsannotation自定义注解 Spring AOP原理代理模式&#xff…

Ubuntu20.04用root(管理员身份)启动vscode

1.终端输入 code --user-data-dir~/.vscode --no-sandbox .

第7章 :面向对象

一、面向对象 面向过程&#xff1a;关心的是我该怎么做&#xff0c;一步步去实现这个功能 面向对象&#xff1a;关心的是我该让谁去做&#xff0c;去调用对象的操作来实现这个功能 面向对象 对象&#xff08;Object&#xff09; 分类&#xff08;Classification&#xff09; …

嵌入式linux八股文

1.指针的大小 指针大小的计算方式。指针的大小并非由其类型决定&#xff0c;而是与编译器的位数相关。具体来说&#xff0c;在 32 位的系统下&#xff0c;指针的大小为 4 个字节&#xff0c;而在 64 位的系统下&#xff0c;指针的大小为 8 个字节。通过示例代码的运行&#xf…

python可视化:端午假期旅游火爆原因分析

python可视化&#xff1a;端午假期旅游火爆原因分析 2025年的旅游市场表现强劲&#xff1a; 2025年端午假期全社会跨区域人员流动量累计6.57亿人次&#xff0c;日均2.19亿人次&#xff0c;同比增长3.0%。入境游订单同比大涨近90%&#xff0c;门票交易额&#xff08;GMV&#…