大家上午好,最近不断有友友反馈仓颉语言和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. Manus,没有秘密「注解版」

    近来Manus走红,「争论」不断,我也在前文<Manus爆火,是硬核还是营销?>中阐述过自Manus发布后,行业讨论以及开源复刻的信息,以及我们如何结合蚂蚁图计算(TuGraph)技术,实 ...

  2. 5个步骤完成 Vue3 开发调试工具安装教程

    Vue3 开发调试工具安装教程 5个步骤 第一步:点击浏览器右上角,更多工具 – 扩展程序 第二步:点击右上角 – 开发者模式 开关 第三步:点击 "添加已解压的扩展程序" 第四步 ...

  3. manim边学边做--三维图形的场景类

    在Manim中,ThreeDScene是一个专门为三维场景设计的类. 它通过配置三维相机.支持复杂的相机运动以及管理物体与相机的交互关系,为科学可视化.工程仿真.数学教育等领域提供了强大的工具. 典型 ...

  4. Vue3生命周期钩子函数深度解析:从源码到实战的万字指南

    一.Vue3生命周期革新特性 相较于Vue2,Vue3通过Composition API带来了更灵活的生命周期管理方式.通过onBeforeMount等函数注册钩子时,实际是通过injectHook方 ...

  5. gland go list-m:无法识别的导入路径

    可以使用go代理:https://goproxy.io 或者阿里云的镜像站:https://mirrors.aliyun.com/goproxy/ 重启即可

  6. 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(6)

    1.问题描述: 使用华为内置的MapComponent, 发现显示不出来.查看日志, MapRender底层有报错. 解决方案: 麻烦按以下步骤检查下地图服务,特别是签名证书指纹那部分. 1.一般没有 ...

  7. 人工智能-A*算法-最优路径搜索实验

    上次学会了<A*算法-八数码问题>,初步了解了A*算法的原理,本次再用A*算法完成一个最优路径搜索实验. 一.实验内容1. 设计自己的启发式函数.2. 在网格地图中,设计部分障碍物.3. ...

  8. Hack The Box-Cap靶机

    该靶机通过信息收集拿到大致信息,利用IDOR访问控制缺陷漏洞获得目标流量包,通过流量分析获取到ftp流量包存在用户名密码,可以ftp登录/ssh登录拿到第一个flag,利用linpeas.sh内网收集 ...

  9. 【Linux】速查手册

    查看Linux系统信息 arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q #显示硬件系统部件 ...

  10. leetcode每日一题:使所有字符相等的最小成本

    题目 2712. 使所有字符相等的最小成本 给你一个下标从 0 开始.长度为 n 的二进制字符串 s ,你可以对其执行两种操作: 选中一个下标 i 并且反转从下标 0 到下标 i(包括下标 0 和下标 ...