大家上午好,最近不断有友友反馈仓颉语言和ArkTs很像,所以要注意不要混淆。今天要分享的是仓颉语言开发商城应用的订单列表页。

首先来分析一下这个页面,它分为三大部分,分别是导航栏、订单类型和订单列表部分。

导航栏由返回按钮和搜索框组成,这里要注意组件横向占满屏幕时要使用layoutWeight属性,导航栏部分的实现代码如下:

Row(8) {
Image(@r(app.media.back))
.width(22)
.height(22)
.onClick({evet => Router.back()})
Search(placeholder: "搜索").height(38).layoutWeight(1)
.onClick({evet => })
}
.width(100.percent)
.height(60)
.padding(right: 12, left: 12)
.alignItems(VerticalAlign.Center)

订单类型应该是一个滚动的横条,虽然它现在没有占满整个屏幕,但是为了适配更多尺寸和类型的屏幕,我们还是要使用Scroll。里面的内容使用foreach循环添加,大家要慢慢习惯仓颉中Foreach的写法,另外这里定一个变量orderIndex和指定当前选中的订单类型,这一部分的具体实现代码如下:

Scroll{
Row(25){
ForEach(this.orderTypeList, itemGeneratorFunc: {item:String,index:Int64 =>
if(this.orderIndex == index){
Text(item)
.fontColor(Color(215, 68, 62, alpha: 1.0))
.fontSize(17)
.fontWeight(FontWeight.Bold)
}else {
Text(item)
.fontColor(Color.GRAY)
.fontSize(16)
.onClick({evet => this.orderIndex = index})
}
})
}
.width(100.percent)
.height(40)
}
.height(40)
.padding( right: 12, left: 12)
.scrollable(ScrollDirection.Horizontal)
.scrollBar(BarState.Off)
.scrollBarColor(Color.GRAY)
.scrollBarWidth(50.px)

最后是订单列表部分,很明显是一个List组件,依然使用layoutWeight占满剩余屏幕。然后店铺名字和发货状态部分使用List的header来实现,

@Builder func itemHead(text:String) {
Row{
Row{
Text(text)
.fontSize(15)
.fontWeight(FontWeight.Bold)
.backgroundColor(Color.WHITE)
Image(@r(app.media.righticon))
.height(18)
.width(18)
.objectFit(ImageFit.Contain)
}
Text('卖家已发货')
.fontColor(Color.RED)
.fontSize(14)
}
.width(100.percent)
.height(35)
.justifyContent(FlexAlign.SpaceBetween)
.alignItems(VerticalAlign.Center)
.padding(left:12,right:12)
} List{
ListItemGroup(ListItemGroupParams(header:{=>bind(this.itemHead,this)('幽蓝旗舰店')})){ }
}

订单商品部分虽然看起来较为复杂,反而不是很难,只要仔细分析布局和对齐方式就能轻松实现,具体代码如下:

ListItem{
Column(10){
Row(8){
Image(@r(app.media.chaofu))
.width(90)
.height(90) Column(11){
Row{
Text('牛津纺布通勤男士衬衫')
.fontSize(16)
.fontColor(Color.BLACK)
Text('¥27.9')
.fontSize(16)
.fontColor(Color.BLACK)
}
.justifyContent(FlexAlign.SpaceBetween)
.width(100.percent)
Text('天蓝色,XL(180)')
.fontSize(14)
.fontColor(Color.GRAY)
.padding(4)
.backgroundColor(Color(241, 241, 241, alpha: 1.0))
.borderRadius(4)
}
.height(90)
.layoutWeight(1)
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Start)
.padding(top:10)
}
Row(10){
Text('实付款:')
.fontSize(13)
.fontColor(Color(74, 74, 74, alpha: 1.0))
Text('¥27.9')
.fontSize(16)
.fontColor(Color.BLACK)
.fontWeight(FontWeight.Bold)
}
.width(100.percent)
.justifyContent(FlexAlign.End)
Row(10){
Text('延长收货')
.padding(top:6,bottom:6,left:8,right:8)
.backgroundColor(Color(240, 240, 240, alpha: 1.0))
.fontSize(14)
.fontColor(Color(74, 74, 74, alpha: 1.0))
.borderRadius(6)
Text('查看物流')
.padding(top:6,bottom:6,left:8,right:8)
.fontSize(14)
.fontColor(Color(74, 74, 74, alpha: 1.0))
.backgroundColor(Color(240, 240, 240, alpha: 1.0))
.borderRadius(6)
Text('确认收货')
.padding(top:6,bottom:6,left:8,right:8)
.fontSize(14)
.fontColor(Color(74, 74, 74, alpha: 1.0))
.backgroundColor(Color(240, 240, 240, alpha: 1.0))
.borderRadius(6)
}
.width(100.percent)
.justifyContent(FlexAlign.End)
}
.padding(left:12,right:12)
}

以上就是今天的内容分享,感谢阅读。##HarmonyOS语言##仓颉##购物#

鸿蒙Next仓颉语言开发实战教程:订单列表的更多相关文章

  1. Swift游戏开发实战教程(霸内部信息大学)

    Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...

  2. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建

    上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...

  3. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立

    上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里 ...

  4. 微信小程序-云开发实战教程

    微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...

  5. Python开发实战教程(8)-向网页提交获取数据

    来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知 ...

  6. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  7. 微信小程序教学第三章(含视频):小程序中级实战教程:列表-页面逻辑处理

    § 页面逻辑处理 本文配套视频地址: https://v.qq.com/x/page/n0554dndrez.html 开始前请把 ch3-2 分支中的 code/ 目录导入微信开发工具 修改 ind ...

  8. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发

    进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...

  9. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作

    /****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...

  10. php扩展开发实战教程(1)

    我的开发环境: Ubuntu16.04 apt方式安装的php5.6, apache,mysql等 由于我的本机用的是apt方式安装的php,所以我这里从头开始用最精简的方式,编译安装一个php5.4 ...

随机推荐

  1. ADO.NET中SQL绑定变量方式总结

    最近在项目上遇到几个问题,关于ADO.NET中SQL绑定变量 总结一下,分享给大家. 1. 使用 SqlParameter(推荐方式,防止 SQL 注入) ADO.NET 提供 SqlParamete ...

  2. C# 中比较实用的关键字,基础高频面试题!

    前言 在C#编程中关键字是构建逻辑和实现功能的基石,它承载着编程语言的语法规则和编程智慧.熟练掌握这些基础高频关键字对提升编程能力和面试表现至关重要,它们是日常开发和解决复杂问题的关键. DotNet ...

  3. linux 各种防火墙

    一.iptables防火墙1.基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service ...

  4. 面试题-Athas性能监控工具(原理部分未完成)

    前言 Arthas工具已经被我们项目组简单的应用到了物流项目的日常运维中.物流项目之前出现过生产消费速度不一致导致内存队列中的消息数据积压的问题,在后来解决了问题之后,我们项目组就更加重视了对JVM的 ...

  5. [SDR] 蓝牙专项教程 —— 从 0 到 1 教小白基于 SDR 编写蓝牙协议栈

    目录 前言 一.开题之作 二.动态发送 BLE 广播包 三.基于 PlutoSDR 实现 BLE 广播包的收发一体能力 四.基于 PlutoSDR 的 BLE 广播包的收发实现接入涂鸦智能 APP 教 ...

  6. 比cat更好用的命令!

    大家好,我是良许. 作为程序员,大家一定对 cat 这个命令不陌生.它主要的功能就是用来显示文本文件的具体内容. 但 cat 命令两个很重大的缺陷:1. 不能语法高亮输出:2. 文本太长的话无法翻页输 ...

  7. 将Particle转成UGUI

    在unity官方论坛看到的一个解决方案,可以将Particle直接转换成CanvasRenderer元素显示.新建一个UIParticleSystem.cs脚本,将以下代码复制进去: using Un ...

  8. unity prefab

    1.修改prefab原始资源某组件为enabled或disabled,实例如果起初和原始资源是一样的状态那么修改原始资源会作用到实例上,如果发现不一样那么原始资源的修改不会作用到实例上,而且以后都不会 ...

  9. Eclipse 安装---windows10环境下

    Eclipse 安装---windows10环境下 一.下载 1.前往eclipse官网下载 https://www.eclipse.org/downloads/ 2.选择类型(压缩包) 3.选择版本 ...

  10. 原型设计工具Axure墨刀哪个好用?

    一.工具基础特性对比 Axure为本地化安装软件,支持离线操作且数据存储本地,安全性较高,但多端协作需通过云端同步,存在更新延迟:墨刀则为云端在线工具,通过浏览器即可使用,无需安装,便于多端协作与实时 ...