
前言在完成了Start和Center两种主轴对齐模式的学习后我们来到了三大基础对齐的最后一个FlexAlign.End末端对齐。End 与 Start 是一对镜像关系——Start 让子项靠向起始端End 让子项靠向末端。在横向排列FlexDirection.Row的场景下这意味着所有子项会紧靠容器右侧左侧留有空白。End对齐在 UI 设计中有着明确的语义它通常用于操作类元素如按钮、图标放置在行末的场景符合内容在左、操作在右的界面设计惯例。理解 End 对齐不仅仅是学会一个参数更是在建立对 UI 对齐规律的系统认知。一、FlexAlign.End 末端对齐核心原理1.1 三种基础对齐的对比Start、Center、End三种对齐是justifyContent最基础的三个取值它们的区别只在于剩余空间放置的位置不同对齐参数剩余空间放置位置视觉效果横向模式FlexAlign.Start全部在末尾右侧子项靠左排列FlexAlign.Center均分在两侧子项整体居中FlexAlign.End全部在起始左侧子项靠右排列Start: |[ A ][ B ][ C ] | Center: | [ A ][ B ][ C ] | End: | [ A ][ B ][ C ]|FlexAlign.End将所有剩余空间堆到起始端左侧子项整体被推到最右边。1.2 完整源码EntryComponentstruct FlexDirectionRow{StateisShow:booleantruebuild(){Column(){if(this.isShow){Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.End}){Text(子项1).width(60).height(40).backgroundColor(#FFD93D).borderRadius(6).textAlign(TextAlign.Center)Text(子项2).width(60).height(40).backgroundColor(#6BCB77).borderRadius(6).textAlign(TextAlign.Center)Text(子项3).width(60).height(40).backgroundColor(#4D96FF).borderRadius(6).textAlign(TextAlign.Center)}.width(100%).padding(16).backgroundColor(#FFFFFF).borderRadius(12)}Text(Flex justifyContent End - 右对齐).fontSize(12).fontColor(#999999).margin({top:12})}.width(100%).height(100%).backgroundColor(#F5F6FA).padding(16)}}1.3 逐行代码深度解析Entry、Component、struct Demo005与前几篇完全相同的标准组件声明。Entry标记页面入口Component标记组件struct是 ArkUI 组件的关键字三者共同定义一个可渲染的页面组件。State isShow: boolean true状态变量初始为true使得 Flex 卡片默认展示。State让这个布尔值具备驱动 UI 重渲染的能力是 ArkUI 响应式模型的基础单元。build()方法ArkUI 的 UI 描述入口框架在需要渲染时调用此方法构建整个 UI 树。最外层Column()及其样式width(100%)宽度占满父容器height(100%)高度占满整个屏幕backgroundColor(#F5F6FA)浅灰色背景与内部白色卡片形成明显的层次对比padding(16)四边均留 16vp防止内容贴边if (this.isShow)条件渲染当isShow为true时渲染 Flex 卡片为false时从 UI 树中移除。这与将visibility设为Hidden不同Hidden 仍然占据空间只是不可见而if为false时元素完全不占位布局会重新计算。核心语句Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.End })这一行是本篇的核心配置了两个参数direction: FlexDirection.Row主轴为水平方向justifyContent: FlexAlign.End所有子项紧靠主轴末端右端排列剩余空间全部堆到左侧起始端与Start相比这里只是把Start换成了End但视觉效果发生了 180° 的翻转——子项从左侧聚集变为右侧聚集。三个Text子项子项1黄色#FFD93D、子项2绿色#6BCB77、子项3蓝色#4D96FF三者的属性链完全一致width(60)固定宽度 60vpEnd对齐不改变子项本身的尺寸height(40)固定高度 40vpborderRadius(6)圆角美化textAlign(TextAlign.Center)文字居中子项的排列顺序保持不变这是一个容易混淆的地方FlexAlign.End只改变了子项整体的位置靠右但子项内部的顺序仍然是从左到右子项1、子项2、子项3。End对齐不会让子项反转顺序。如果需要子项从右向左排列需要修改direction为FlexDirection.RowReverse而不是依靠justifyContent来实现。Flex 容器样式width(100%)容器宽度为父级全宽这样才有足够的剩余空间产生推到右侧的效果padding(16)内边距 16vp值得注意的是右侧 padding 会让子项与容器右边界之间保持 16vp 的空白子项紧靠的是 padding 边界而非容器物理边缘backgroundColor(#FFFFFF)白色卡片borderRadius(12)大圆角底部说明文字Text(Flex justifyContent End - 右对齐)描述组件功能小号浅灰字体顶边距 12vp 与卡片保持间隔。技巧注意区分FlexAlign.End和FlexDirection.RowReverse。End改变的是对齐位置子项去哪里顺序不变RowReverse改变的是排列方向子项的主轴起点顺序会反转。两者作用完全不同不能互换。二、末端对齐的实际应用场景2.1 常见 UI 场景场景说明操作按钮区列表项右侧的编辑、删除按钮靠右排列消息气泡发送者的消息内容靠右显示状态标签卡片右侧的价格、状态等信息靠右对齐工具栏右侧搜索、设置等辅助功能图标放在工具栏右端2.2 三种基础对齐的选择指南实际开发中选择哪种对齐往往由内容语义决定Start靠左主体内容、正文、主要操作遵循从左到右的阅读习惯Center居中标题、提示信息、需要视觉平衡的元素End靠右辅助操作、状态标签、价格信息对应内容在左、操作/状态在右的界面惯例核心特性镜像于 StartEnd与Start的剩余空间分配策略完全对称互为镜像子项顺序不变靠右对齐只移动整体位置不改变子项内部的左到右顺序响应容器宽度容器越宽子项距左边的空白越大容器越窄空白越小技术优势靠右对齐无需知道容器的实际宽度声明一个参数即可自动适配不同屏幕尺寸语义清晰代码的排列意图一目了然维护者无需理解复杂的 margin 计算总结本篇完整讲解了justifyContent: FlexAlign.End末端对齐的原理、源码实现与适用场景。至此justifyContent三种最基础的对齐模式——Start靠起始端、Center居中、End靠末端——我们已经全部覆盖完毕。这三种模式的本质是一套统一的逻辑把剩余空间放在哪里。Start 放末尾Center 放两边End 放起始——理解了这条规律任何方向横向/纵向、任何内容数量下你都能准确预判对齐结果。在 HarmonyOS6 的 ArkUI 开发中justifyContent的应用无处不在。从简单的三按钮行到复杂的卡片内部布局合理选择对齐方式不仅影响视觉美观更直接关系到用户操作的流畅性和界面信息的传达效率。接下来我们将进入更高级的间距对齐模式——SpaceBetween和SpaceAround这两种模式让子项之间的空间分配更加灵活多变。