HarmonyOS应用开发实战:猫猫大作战-`Row` 容器的横排套路、`justifyContent` 水平排列、`alignItems` 垂直对齐
前言游戏主菜单除了标题和按钮常有一个「最高分徽章」——把图标、分数数字、NEW 标三个元素横排成一个小徽章挂在标题上方或右上角。这种「图标 文字 标签」的横排组合是Row容器最经典的场景。本篇以「猫猫大作战」主菜单的最高分徽章为锚点把Row容器的横排套路、justifyContent水平排列、alignItems垂直对齐、margin子间距讲透。读完本篇你将能独立写出三段横排徽章、两端贴边横排、图标按钮组三种横排布局。提示本系列不讲 ArkTS 基础语法与环境搭建假设你已跟完第 1–7 篇。一、场景拆解最高分徽章规格打开entry/src/main/ets/pages/Index.ets的MainMenuView最高分徽章横排三段// 来源entry/src/main/ets/pages/Index.ets MainMenuView() 改造片段 Row() { Text().fontSize(20) Text(最高分: ${this.highScore}) .fontSize(14) .fontColor(#2C3E50) .fontWeight(FontWeight.Bold) .margin({ left: 6 }) if (this.isNewHigh) { Text(NEW) .fontSize(10) .fontColor(#FFFFFF) .backgroundColor(#E74C3C) .borderRadius(4) .padding({ left: 4, right: 4, top: 2, bottom: 2 }) .margin({ left: 6 }) } } .padding({ left: 12, right: 12, top: 6, bottom: 6 }) .backgroundColor(rgba(255,255,255,0.7)) .borderRadius(16) .alignItems(VerticalAlign.Center) .margin({ bottom: 16 })徽章规格拆解维度取值作用容器Row三段横排子间距margin.left: 6图标/文字/NEW 标之间 6vp内边距padding 12/6内容与徽章边呼吸空间底色rgba(255,255,255,0.7)半透明白浮在渐变蓝上圆角16胶囊形徽章垂对齐VerticalAlign.Center三段顶部对齐文字基线居中关键经验徽章圆角 16比卡片 12 大比按钮 28 小——胶囊感但不全圆是「徽章」专属甜区。二、Row 容器核心属性速览参考 线性布局 (Row/Column) 官方指南。Row是水平线性容器子元素自左而右排列。2.1 本篇用到的属性属性类型作用本篇取值spacenumber子元素统一间距未用用 margin 单独控widthstring | number容器宽度不设内容撑开heightstring | number容器高度不设内容撑开paddingPadding | number内边距{ left: 12, right: 12, top: 6, bottom: 6 }backgroundColorstring | Color背景色rgba(255,255,255,0.7)borderRadiusnumber圆角16alignItemsVerticalAlign 枚举子元素垂直对齐CenterjustifyContentFlexAlign 枚举子元素水平排列未用自然排2.2 Row vs Column 主轴容器主轴justifyContent控alignItems控Row水平 ↔水平排列垂直对齐Column垂直 ↓垂直排列水平对齐记忆Row的alignItems用VerticalAlignColumn的alignItems用HorizontalAlign——别搞反。三、alignItems 垂直对齐三值VerticalAlign.Top // 顶对齐 VerticalAlign.Center // 居中 VerticalAlign.Bottom // 底对齐3.1 徽章用 Center三段顶部对齐Row() { Text().fontSize(20) Text(最高分: ${this.highScore}).fontSize(14).margin({ left: 6 }) } .alignItems(VerticalAlign.Center)Center让20 字号和文字14 字号垂直居中对齐——视觉基线居中最自然。3.2 三值视觉对比假设 Row 高 40 20 字号文字 14 字号模式文字说明Top顶贴 0顶贴 0都顶对齐但字号不同底部错乱Center居中居中基线居中最自然Bottom底贴 40底贴 40都底对齐顶部错乱实战经验横排混合字号内容图标 文字默认用Center。Top/Bottom只在三段同字号时用。四、margin 子间距的两种控法4.1 单独 margin本项目写法Row() { Text().fontSize(20) Text(最高分: ${this.highScore}).fontSize(14).margin({ left: 6 }) Text(NEW).fontSize(10).margin({ left: 6 }) }每个子元素margin.left: 6单独控间距。优点可以不均匀——NEW标离文字近6离屏边远无 margin。4.2 Row space 统一间距Row({ space: 6 }) { Text().fontSize(20) Text(最高分: ${this.highScore}).fontSize(14) Text(NEW).fontSize(10) }优点简洁所有子元素均 6vp。缺点必须均匀无法让 NEW 离文字更近。4.3 取舍场景推荐三段间距均匀space: 6间距不均匀margin.left单独控首尾不空中间空space 首尾margin.left: 0五、justifyContent 水平排列实战5.1 自然排默认 StartRow() { Text().fontSize(20) Text(最高分: ${this.highScore}).fontSize(14).margin({ left: 6 }) } // justifyContent 不写默认 Start左贴边徽章用自然排——三段从左贴边依次排。5.2 两端贴边SpaceBetweenHUD 底栏三段得分/预告/控制用SpaceBetweenRow() { Text(得分: ${this.score}).fontSize(16) Column() { /* 预告区 */ } Row() { /* 控制按钮组 */ } } .width(100%) .justifyContent(FlexAlign.SpaceBetween) .alignItems(VerticalAlign.Center)SpaceBetween让首尾贴边、中间均分——经典 HUD 三栏。5.3 居中Center加载页加载图标 文字居中Row() { LoadingProgress().width(24).color(#2ECC71) Text(加载中...).fontSize(14).fontColor(#95A5A6).margin({ left: 8 }) } .width(100%) .justifyContent(FlexAlign.Center) .alignItems(VerticalAlign.Center)5.4 六值视觉示意Row 宽 1003 个子元素各宽 10模式左中右说明Start101010首贴左依次排Center351035居中左右空对称End701010尾贴右依次排SpaceBetween0350首尾贴边中间 35SpaceAround17.517.517.5每元素左右空对称SpaceEvenly17.517.517.5含首尾全均分六、完整代码三种横排徽章对比6.1 最高分徽章本项目Row() { Text().fontSize(20) Text(最高分: ${this.highScore}) .fontSize(14).fontColor(#2C3E50).fontWeight(FontWeight.Bold) .margin({ left: 6 }) if (this.isNewHigh) { Text(NEW) .fontSize(10).fontColor(#FFFFFF).backgroundColor(#E74C3C) .borderRadius(4).padding({ left: 4, right: 4, top: 2, bottom: 2 }) .margin({ left: 6 }) } } .padding({ left: 12, right: 12, top: 6, bottom: 6 }) .backgroundColor(rgba(255,255,255,0.7)) .borderRadius(16) .alignItems(VerticalAlign.Center) .margin({ bottom: 16 })6.2 HUD 底栏三栏SpaceBetweenRow() { Text(得分: ${this.score}).fontSize(16).fontColor(#2C3E50) Column() { Text(下一个).fontSize(12).fontColor(#95A5A6) Text(this.nextCatEmoji).fontSize(24) }.alignItems(HorizontalAlign.Center) Row() { Button(暂停).width(80).height(40).backgroundColor(#95A5A6) Button(重开).width(80).height(40).backgroundColor(#E74C3C).margin({ left: 8 }) } } .width(100%).padding({ left: 16, right: 16 }) .justifyContent(FlexAlign.SpaceBetween) .alignItems(VerticalAlign.Center)6.3 图标按钮组space 统一Row({ space: 8 }) { Button(暂停) { SymbolGlyph($r(sys.symbol.pause)).fontSize(16).fontColor(Color.White) } .width(40).height(40).backgroundColor(#95A5A6).borderRadius(20) Button(重开) { SymbolGlyph($r(sys.arrow.clockwise)).fontSize(16).fontColor(Color.White) } .width(40).height(40).backgroundColor(#E74C3C).borderRadius(20) Button(设置) { SymbolGlyph($r(sys.gear)).fontSize(16).fontColor(Color.White) } .width(40).height(40).backgroundColor(#2C3E50).borderRadius(20) } .alignItems(VerticalAlign.Center)三个圆形图标按钮均 8vp 间距space最简洁。七、调试技巧横排怎么量加临时 border给Row和子元素都加.border({ width: 1, color: Color.Red })看清边界。justifyContent验 width水平排列不生效Row是否设了width没设宽度内容撑开无空可排。alignItems验字号垂直居中错乱多半是子元素字号差异大——Center解或统一字号。真机看徽章预览器渲染接近真机但 Emoji 字形可能差异以真机为准。八、性能与最佳实践Row比Flex高效不需要 flexGrow/shrink 时用Row单 pass 布局性能优。space比多个margin高效均匀间距用space容器一次算。alignItems默认CenterRow 默认就是垂直居中不写也居中但明确写出更可读。borderRadius别超过高度一半徽章高度 padding.topbottom 内容高 ≈ 28圆角 16 没问题超过 14 视觉像气泡。总结本篇我们从最高分徽章切入掌握Row容器的横排套路、justifyContent水平排列、alignItems垂直对齐、space/margin间距控制四大要点并给出了徽章、HUD 三栏、图标按钮组三种横排布局的完整代码。核心要点横排用 Row垂直对齐 Center均匀间距 space不均匀 margin。下一篇我们将继续主菜单拆解Stack叠层容器的状态页面叠层用法。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源「猫猫大作战」项目源码本仓库entry/src/main/ets/pages/Index.ets线性布局 (Row/Column) 官方指南Row API 参考FlexAlign 枚举开源鸿蒙跨平台社区HarmonyOS 开发者官方文档首页系列索引本仓库articles/INDEX.md

相关新闻

Qwen3.6-27B-Uncensored-HauhauCS-Balanced量化模型终极指南:如何在AI模型选择中实现性能与资源的最佳平衡

Qwen3.6-27B-Uncensored-HauhauCS-Balanced量化模型终极指南:如何在AI模型选择中实现性能与资源的最佳平衡

Qwen3.6-27B-Uncensored-HauhauCS-Balanced量化模型终极指南:如何在AI模型选择中实现性能与资源的最佳平衡 【免费下载链接】Qwen3.6-27B-Uncensored-HauhauCS-Balanced 项目地址: https://ai.gitcode.com/hf_mirrors/HauhauCS/Qwen3.6-27B-Uncensored-HauhauCS-…

2026/7/28 1:58:25 阅读更多 →
【JAVA毕设源码分享】基于springboot家教系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot家教系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 1:58:25 阅读更多 →
从聊天到项目:解锁Codex AI编程副驾驶的实战全链路指南

从聊天到项目:解锁Codex AI编程副驾驶的实战全链路指南

如果你还在把 Codex 当成一个“更聪明的聊天机器人”来用,那你可能只发挥了它 10% 的潜力。很多开发者第一次接触 Codex 时,都抱着和 ChatGPT 对话的心态,输入一句“帮我写个登录页面”,然后期待一段完整的代码从天而降。结果往往是,要么代码不完整,要么上下文理解有偏差…

2026/7/28 1:58:25 阅读更多 →

最新新闻

AI代码助手自动补全如何成为软件供应链攻击新入口?

AI代码助手自动补全如何成为软件供应链攻击新入口?

1. 项目概述:当“智能助手”成为攻击跳板最近在跟几个做安全研究的朋友聊天,他们提到一个让我后背发凉的攻击思路,我称之为“依赖混淆2.0”。传统的依赖混淆攻击,大家可能都听说过,攻击者会抢注一个与公司内部私有包同…

2026/7/28 2:20:32 阅读更多 →
学术写作全流程AI工具实战指南

学术写作全流程AI工具实战指南

1. 学术写作全流程AI工具实战指南去年帮导师带研究生论文时,发现学生们最常问的三个问题是:"开题方向怎么定?"、"文献综述怎么写?"、"查重率太高怎么办?"。作为经历过SCI投稿被拒七次最…

2026/7/28 2:20:32 阅读更多 →
TileLang实战:用Python DSL自动生成高性能GPU计算内核

TileLang实战:用Python DSL自动生成高性能GPU计算内核

1. 先搞清楚 TileLang 到底解决什么问题如果你做过 GPU 内核开发,尤其是需要手动优化矩阵乘法(GEMM)或注意力机制(如 FlashAttention)这类计算密集型任务,肯定遇到过这些痛点:CUDA 代码难写难调…

2026/7/28 2:20:32 阅读更多 →
AI与Python在双碳与生态水文中的技术融合

AI与Python在双碳与生态水文中的技术融合

1. 项目概述:AI与Python在双碳与生态水文中的技术融合这个项目本质上是在探索如何将人工智能技术与Python编程语言相结合,来解决双碳目标和生态水文研究中的关键科学问题。具体来说,我们聚焦于两个核心技术点:蒸散发组分解析和GPP…

2026/7/28 2:20:32 阅读更多 →
手机端编程环境搭建与云端部署实战指南

手机端编程环境搭建与云端部署实战指南

在移动开发与云端编程快速发展的背景下,越来越多的开发者开始探索在手机端完成原本需要桌面环境才能进行的复杂任务。ChatGPT Work 这类工具的出现,使得在手机端进行建站、代码编写、调试甚至部署成为可能,这为移动办公、应急处理或轻量级项目…

2026/7/28 2:20:32 阅读更多 →
AI编程助手非单调性能曲线:任务复杂度与提示工程的优化匹配

AI编程助手非单调性能曲线:任务复杂度与提示工程的优化匹配

最近在 AI 编程助手领域,一个有趣的现象引起了开发者社区的关注:Claude Opus 模型在 FrontierCode 基准测试中,展现出了与传统认知不同的性能表现。通常我们认为,模型越大、训练数据越多,性能就应该线性提升&#xff0…

2026/7/28 2:19:31 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻