鸿蒙Next仓颉语言开发实战教程:店铺详情页

布局王
• 阅读 3

各位早上好,幽蓝君又来分享仓颉开发教程了,今天的内容是店铺详情页: 鸿蒙Next仓颉语言开发实战教程:店铺详情页 这个页面的内容看似简单,其实有很多小细节需要注意,主要还是让大家熟悉List容器的使用。 整个页面由导航栏和List容器两大部分组成,导航栏我们已经分享过多次,今天不再赘述。主要说一下List部分。 首先需要注意的是在有自定义导航栏的情况下如何让List占满剩余屏幕,你可以设置layoutWeight属性:

List{
}
.width(100.percent)
.layoutWeight(1)
.backgroundColor(Color(247, 247, 247, alpha: 1.0))

在List容器中,大部分内容都可以直接使用ListItem实现,但是在店铺简介和开店时间部分可能需要使用ListItemGroup,这里需要注意,使用ListItemGroup需要传入参数ListItemGroupParams,这里的内容主要是header和footer样式,不过可以传空:

ListItemGroup(ListItemGroupParams()){
}

另外,下面的几条内容是有圆角的,不过仓颉提供了非常灵活的圆角设置方式,你可以在borderRadius属性中直接写一个数字代表每一个圆角的弧度: .borderRadius(8) 也可以逐个设置每一个角的弧度,不过这时候就不能直接写数字了,这里Length类型,需要带上单位:

.borderRadius(bottomLeft: 8.vp, bottomRight: 8.vp,topLeft: 8.vp, topRight: 8.vp)

以上就是本页面需要注意的地方,下面附上本页面的完整代码:

import ohos.base.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
import ohos.router.Router
import cj_res_entry.app
@Entry
@Component
public class shoppage  {
    func build() {
        Column {
            Stack {
                 Text('店铺详情')
                .fontSize(16)
                .fontWeight(FontWeight.Bold)
                .fontColor(Color.BLACK)
                Row{
                     Image(@r(app.media.back))
                .width(27)
                .height(27)
                 .onClick({evet => Router.back()})
                }.width(100.percent).justifyContent(FlexAlign.Start).padding(left:5)
            }
            .width(100.percent)
            .height(60)
            .backgroundColor(Color.WHITE)
            List(space:10){
                ListItem{
                    Column{
                         Text('商城')
                            .fontSize(22)
                            .fontWeight(FontWeight.Bold)
                            .fontColor(Color.WHITE)
                        .width(50)
                        .height(50)
                        .backgroundColor(Color.RED)
                        .textAlign(TextAlign.Center)
                        .borderRadius(8)
                        Text('幽蓝计划旗舰店')
                        .fontSize(15)
                        .fontColor(Color.BLACK)
                        .fontWeight(FontWeight.Bold)
                        .margin(top:5)
                        Column{
                            Text('已关注')
                            .fontSize(13)
                            .fontColor(Color.GRAY)
                            Text('11万人关注')
                            .fontSize(12)
                            .fontColor(Color.GRAY)
                        }
                        .width(110)
                        .height(40)
                        .margin(top:30)
                        .alignItems(HorizontalAlign.Center)
                        .justifyContent(FlexAlign.Center)
                        .border(width: Length(0.5, unitType: LengthType.vp), color: Color(216, 216, 216, alpha: 1.0), radius:  Length(20, unitType: LengthType.vp), style: BorderStyle.Solid)
                    }
                    .width(100.percent)
                    .alignItems(HorizontalAlign.Center)
                    .backgroundColor(Color.WHITE)
                    .padding(bottom:10)
                }
                ListItem{
                     Row{
                            Text('店铺二维码')
                            .fontColor(Color.BLACK)
                            .fontSize(15)
                            .fontWeight(FontWeight.Bold)
                            Image(@r(app.media.chaofu))
                            .width(22)
                            .height(22)
                        }
                        .alignItems(VerticalAlign.Center)
                        .justifyContent(FlexAlign.SpaceBetween)
                        .width(100.percent)
                        .height(38)
                        .borderRadius(8)
                    .padding(left:10,right:10)
                        .backgroundColor(Color.WHITE)
                }
                .padding(left:10,right:10)
                ListItemGroup(ListItemGroupParams()){
                    ListItem{
                        Row{
                            Text('店铺简介')
                            .fontColor(Color.BLACK)
                            .fontSize(15)
                            .fontWeight(FontWeight.Bold)
                            Text('潮服/运配/男女服饰')
                            .fontColor(Color.GRAY)
                            .fontSize(15)
                             .margin(left:10)
                        }
                        .alignItems(VerticalAlign.Center)
                        .width(100.percent)
                        .height(38)
                         .padding(left:10,right:10)
                    }
                    .backgroundColor(Color.WHITE)
                    .borderRadius(topLeft: 8.vp, topRight: 8.vp)

                    ListItem{
                        Row{
                            Text('开店时间')
                            .fontColor(Color.BLACK)
                            .fontSize(15)
                            .fontWeight(FontWeight.Bold)
                            Text('2025-05-05')
                            .fontColor(Color.GRAY)
                            .fontSize(15)
                            .margin(left:10)
                        }
                        .alignItems(VerticalAlign.Center)
                        .width(100.percent)
                        .height(38)
                         .padding(left:10,right:10)
                    }
                    .backgroundColor(Color.WHITE)
                    .borderRadius(bottomLeft: 8.vp, bottomRight: 8.vp)
                }
                 .borderRadius(8)
                 .padding(left:10,right:10)

                ListItem{
                    Row{
                        Text('查看全部商品')
                        .fontWeight(FontWeight.Bold)
                        .fontColor(Color.RED)
                        .fontSize(15)
                    }
                    .width(100.percent)
                    .height(38)
                    .backgroundColor(Color.WHITE)
                    .borderRadius(8)
                    .alignItems(VerticalAlign.Center)
                    .justifyContent(FlexAlign.Center)
                }
                .padding(left:10,right:10)
            }
            .width(100.percent)
            .layoutWeight(1)
            .backgroundColor(Color(247, 247, 247, alpha: 1.0))
        }
    }
}

今天的内容就是这样,感谢阅读。##HarmonyOS语言##仓颉##购物#

点赞
收藏
评论区
推荐文章
布局王 布局王
7小时前
鸿蒙仓颉开发语言实战教程:实现商城应用首页
经过了几天的入门教程,我们终于进入到了仓颉开发语言的实战环节,今天分享的内容是实现商城应用的首页页面,效果图如下:首页的内容包括导航栏、轮播图、商品分类和商品列表,我们下面逐一介绍。导航栏仓颉语言中是没有导航栏组件的,我们需要自己去开发。此处的导航栏也比较
布局王 布局王
7小时前
鸿蒙仓颉语言开发实战教程:购物车页面
大家上午好,仓颉语言商城应用的开发进程已经过半,不知道大家通过这一系列的教程对仓颉开发是否有了进一步的了解。今天要分享的购物车页面:看到这个页面,我们首先要对它简单的分析一下。这个页面一共分为三部分,分别是导航栏、购物车列表和底部的结算栏。也能它们是col
布局王 布局王
7小时前
鸿蒙仓颉语言开发实战教程:商城应用个人中心页面
又到了高考的日子,幽蓝君在这里祝各位考生朋友冷静答题,超常发挥。今天要分享的内容是仓颉语言商城应用的个人中心页面,先看效果图:下面介绍下这个页面的实现过程。我们可以先分析下整个页面的布局结构。可以看出它是纵向的布局,整个页面由导航栏、个人资料、vip横条和
布局王 布局王
7小时前
鸿蒙Next仓颉语言开发实战教程:订单列表
大家上午好,最近不断有友友反馈仓颉语言和ArkTs很像,所以要注意不要混淆。今天要分享的是仓颉语言开发商城应用的订单列表页。首先来分析一下这个页面,它分为三大部分,分别是导航栏、订单类型和订单列表部分。导航栏由返回按钮和搜索框组成,这里要注意组件横向占满屏
布局王 布局王
7小时前
鸿蒙Next仓颉语言开发实战教程:设置页面
仓颉语言商城应用的页面开发教程接近尾声了,今天要分享的是设置页面:导航栏还是老样式,介绍过很多次了,今天不再赘述。这个页面的内容主要还是介绍List容器的使用。可以看出列表内容分为三组,所以我们要用到ListItemGroup,不过第一组是没有标题的,所以
布局王 布局王
7小时前
鸿蒙Next仓颉语言开发实战教程:消息列表
大家周末好,今天要分享的是仓颉语言开发商城应用实战教程的消息列表页面。这个页面的导航栏和之前有所不同,不过难度并没有增加,只是标题移到了左边,我们使用两端对齐方式就能实现,导航栏部分的具体代码如下:Row(8)Text('消息').fontSize(16)
布局王 布局王
7小时前
鸿蒙Next仓颉语言开发实战教程:聊天列表
昨天分享了消息列表页面,今天继续分享聊天页面的开发过程:这个页面又是常见的上中下布局,从上至下依次为导航栏、聊天列表和输入框工具栏,我们可以先写一下简单的结构,最上面导航栏是横向布局,所以写个Row容器,中间是List,底部仍然是Row容器,导航栏和底部输
布局王 布局王
7小时前
HarmonyOS NEXT仓颉开发语言实战案例:动态广场
大家好,今日要分享的是使用仓颉语言开发动态广场页面,也比较像朋友圈页面:整个页面分为两部分,分别是导航栏和状态列表,导航栏比较简单,我们可以先写下导航栏的具体代码和页面的基本结构:ColumnRow(10)Text('推荐').fontColor(Colo
布局王 布局王
7小时前
HarmonyOS NEXT仓颉开发语言实战案例:电影App
大家周末好,今天依然为大家分享之前使用ArkTS实现过的案例,一个电影App,今天使用仓颉的UI再次实现,看看仓颉和ArkTs有哪些相同和不同之处。这个页面的结构比较简单,因为没有导航栏,全都使用List容器实现,最顶部是一个巨大的图片,这个不再演示,继续
布局王 布局王
7小时前
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
各位周末好,今天为大家来仓颉语言外卖App的实战分享。我们可以先分析一下页面的布局结构,它是由导航栏和List容器组成的。幽蓝君目前依然没有找到仓颉语言导航栏的系统组件,还是要自定义,这个导航栏有三部分内容,可以使用两端对齐,要注意的是,如果需要中间部分在