HarmonyOS7 支付方式单选卡片:用 FlexAlign.SpaceEvenly 做好支付选择

发布时间:2026/11/5 10:24:03

HarmonyOS7 支付方式单选卡片:用 FlexAlign.SpaceEvenly 做好支付选择 文章目录前言案例效果和学习目标从布局读到状态重点代码解释完整代码我的小建议前言这组案例开始进入选择类和调节类组件写业务页面时会经常遇到。这个案例围绕Radio 水平卡片展开重点不是把属性背下来而是弄清楚状态、组件和用户操作之间怎么连起来。这篇我会把重点放在卡片布局上尽量说清楚它在真实页面里有什么用。案例效果和学习目标如果把它放到真实项目里常见位置可能是设置页、筛选页、编辑页或者某个需要快速操作的工具面板。用户点一下、选一下、拖一下页面就应该给出明确反馈。维度内容案例主题Radio 水平卡片核心 APIFlexAlign.SpaceEvenly使用场景支付选择文章侧重点卡片布局从布局读到状态代码结构可以按三层读外层负责页面背景和留白中间卡片承载主要内容内部组件处理具体交互。这样的层级不花哨但维护起来比较舒服。我比较推荐先把状态字段命名清楚。选中项、开关状态、滑块数值最好都能从名字看出用途比随手写flag、value后面省心很多。重点代码解释先看一段连续代码基本能判断这个案例的运行方式。它包含入口组件、状态字段以及一部分核心 UI。interfacePaymentRadioCardsItem{value:stringicon:stringcolor:string}EntryComponentstruct PaymentRadioCards{StateisShow:booleantrueStateselectedPay:stringwechatbuild(){Column(){if(this.isShow){Column(){Text(Radio 水平排列 - 支付方式).fontSize(16).fontWeight(FontWeight.Bold).margin({bottom:12})Column(){这段代码可以拆成几块看State保存当前页面状态用户操作之后会触发 UI 更新。FlexAlign.SpaceEvenly是案例的关键入口真正的行为通常由它和事件回调一起完成。布局属性服务于业务表达选中、禁用、拖动这些状态最好都能在视觉上看出来。完整代码下面是整理后的完整代码。组件名已经改成PaymentRadioCards共享颜色也内置到当前文件里单独复制出来读会更方便。constCOLOR_OPTIONS:Array{name:string;value:string}[{name:蓝色,value:#4D96FF},{name:绿色,value:#6BCB77},{name:黄色,value:#FFD93D},{name:红色,value:#FF6B6B},{name:紫色,value:#9B59B6},{name:橙色,value:#FFA500},{name:青色,value:#00BCD4},{name:粉色,value:#FF69B4},{name:灰蓝,value:#607D8B},{name:深色,value:#333333}]constPAGE_BG_COLOR:string#F5F6FAconstCARD_BG_COLOR:string#FFFFFFconstSUBTEXT_COLOR:string#8A8A8AinterfacePaymentRadioCardsItem{value:stringicon:stringcolor:string}EntryComponentstruct PaymentRadioCards{StateisShow:booleantrueStateselectedPay:stringwechatbuild(){Column(){if(this.isShow){Column(){Text(Radio 水平排列 - 支付方式).fontSize(16).fontWeight(FontWeight.Bold).margin({bottom:12})Column(){Row({space:12}){ForEach([{value:wechat,icon:W,color:COLOR_OPTIONS[3].value},{value:alipay,icon:A,color:COLOR_OPTIONS[5].value},{value:bankcard,icon:B,color:COLOR_OPTIONS[1].value}],(item:PaymentRadioCardsItem){Column(){Text(item.icon).fontSize(24).fontWeight(FontWeight.Bold).fontColor(this.selectedPayitem.value?#FFFFFF:item.color).width(48).height(48).textAlign(TextAlign.Center).borderRadius(24).backgroundColor(this.selectedPayitem.value?item.color:#F5F5F5)Radio({value:item.value,group:payGroup}).checked(this.selectedPayitem.value).onChange((c:boolean){if(c)this.selectedPayitem.value}).radioStyle({checkedBackgroundColor:item.color}).margin({top:8})}.padding(12).borderRadius(10).backgroundColor(this.selectedPayitem.value?item.color10:#FAFAFA).border({width:this.selectedPayitem.value?1.5:0,color:item.color,radius:10})})}.justifyContent(FlexAlign.SpaceEvenly).width(100%)}}.width(100%).padding(16).backgroundColor(CARD_BG_COLOR).borderRadius(12)}Text(支付方式单选卡片Radio 水平排列 - 卡片式水平布局).fontSize(12).fontColor(SUBTEXT_COLOR).margin({top:12})}.width(100%).height(100%).backgroundColor(PAGE_BG_COLOR).padding(16)}}我的小建议继续扩展的话我会把静态选项抽成接口返回的数据再补上空状态和异常状态。示例页面先把核心交互跑通就够了到了业务页面状态边界才是真正容易出问题的地方。
延伸阅读

更多相关文章

2026/11/3 23:39:26

C++ Builder 12安装IOComp V4.04:工业通信组件集成与编译实战

1. 项目概述:为什么要在C Builder 12中安装IOComp V4.04?如果你正在用C Builder 12开发工控、数据采集或者需要与各种工业硬件(比如PLC、传感器、运动控制卡)打交道的项目,那么你很可能听说过或者正在寻找IOComp这个组…

2026/10/27 2:32:34

Plotly柱状图三层渲染引擎与实战避坑指南

1. 这不是一份“Plotly柱状图速查手册”,而是一线数据可视化工程师踩坑十年后整理的实战笔记你打开Plotly文档,翻到px.bar()那一页,参数密密麻麻列了二十多个:x,y,color,barmode,orientation,text_auto,hover_data,category_order…

2026/11/3 0:26:27

Nginx安全头配置实战:从原理到部署的Web安全加固指南

1. 项目概述:为什么Nginx安全头配置是Web安全的基石 最近在排查一个线上服务的安全扫描报告时,发现几个关于HTTP响应头的“低危”告警,比如缺少 X-Frame-Options 、 X-Content-Type-Options 等。起初没太在意,觉得这些都是“…

2026/11/5 10:23:51

AGI时代智慧主权与《全球智慧文明宪章》技术解析

1. 项目背景与核心议题 2026年AGI(通用人工智能)技术突破临界点,全球范围内出现首个通过图灵测试的自主意识体。这一里程碑事件引发各国对"智慧主权"概念的激烈辩论——当AI系统具备自我意识后,其创造者、部署国是否天然…

2026/11/5 10:23:51

3D R-Tree:高效时空数据索引技术解析

1. 3D R-Tree:时空数据索引的革命性解决方案 在当今数据爆炸的时代,时空数据的高效索引成为了一个关键挑战。想象一下,你需要在一个包含数百万移动对象的系统中快速查询"在特定时间段内经过某区域的所有车辆",传统的数据…

2026/11/5 10:23:51

JavaFX启动界面实战:自绘Stage、真实进度与淡出交接

1. 先把启动界面这件事拆干净 JavaFX 启动界面看着是个小事:一个 600380 的窗口,一张图、一根进度条、一行状态文字,半天画完。真动手做才发现,难的不是画,是 它出现和消失的那两个瞬间 ——窗口出现时不能白屏、不能…

2026/11/5 10:23:51

FastAPI接口限流实战:从原理到Redis实现

1. 为什么需要接口限流? 上周隔壁团队的服务又被刷爆了,原因是某个新上线的接口没有做限流防护,被脚本疯狂调用导致数据库连接池耗尽。这让我想起三年前自己踩过的类似坑——当时一个公开API被恶意爬虫以每秒200次的频率请求,直接…

2026/11/5 10:23:51

文生图内容安全四层防线:从输入过滤到行为风控

1. 从"几句话出一张图"说起:能力下沉带来的真问题 最近圈子里聊得最多的一件事,是两名在校学生用 AI 生成不当图像、再想办法变现。很多人第一反应是猎奇,是"可真刑"三个字的调侃。但我作为常年做生成式 AI 产品和内容安…

2026/11/5 10:18:46

机器学习数据标注中的认知偏差防控与工程实践

1. 数据标注中的认知偏差问题剖析数据标注作为机器学习项目的基础环节,其质量直接影响模型性能。我在参与医疗影像标注项目时,曾遇到标注员将良性肿瘤误标为恶性肿瘤的情况,导致模型召回率虚高。这种系统性偏差往往源于人类认知的固有模式。认…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑