新闻详情

新闻详情

首页 / 资讯中心 / 详情

HarmonyOS pc实战之Column 的 alignItems的交叉轴对齐

发布时间:2026/10/24 18:29:39来源:尧图网络
HarmonyOS pc实战之Column 的 alignItems的交叉轴对齐
文章目录前言三种对齐模式PC端设置页左对齐的典型场景alignSelf单个子项覆盖父级对齐常见误区TextInput 不响应 alignItems写在最后前言Column 的主轴是垂直方向子项从上往下堆叠。但子项在水平方向上怎么对齐靠左、居中、靠右——这就是alignItems的职责。听起来简单但做过几个实际页面就知道坑在哪Column 默认居中对齐你在里面放一个Text发现文字确实居中了然后你加一个TextInput发现它没有居中……因为TextInput默认有自己的宽度适配逻辑需要显式设width(100%)才能填满。alignItems和alignSelf组合起来才是灵活控制子项对齐的完整工具。三种对齐模式Column 的alignItems接受HorizontalAlign枚举三个值Column(){/* 子项 */}.alignItems(HorizontalAlign.Start)// 左对齐.alignItems(HorizontalAlign.Center)// 居中默认.alignItems(HorizontalAlign.End)// 右对齐默认值是Center所以你不写这个属性子项就是居中的。PC端设置页左对齐的典型场景设置页的每一行都是左对齐的——图标、文字、说明文本全部靠左。这时候 Column 用HorizontalAlign.Start。完整示例PcAlignDemoPage.etsimport{router}fromkit.ArkUIinterfaceSettingItem{id:numbericon:stringtitle:stringdesc:stringtype:toggle|arrow|valuevalue:string}interfaceSettingGroup{groupTitle:stringitems:SettingItem[]}EntryComponentstruct PcAlignDemoPage{StateactiveAlign:number1// 0Start, 1Center, 2EndStatetoggleStates:boolean[][true,false,true]StatedemoText:string演示文字块privatesettingGroups:SettingGroup[][{groupTitle:通用设置,items:[{id:1,icon:,title:深色模式,desc:跟随系统,type:toggle,value:},{id:2,icon:,title:消息通知,desc:已开启所有通知,type:toggle,value:},{id:3,icon:,title:语言,desc:简体中文,type:arrow,value:简体中文},]},{groupTitle:账号安全,items:[{id:4,icon:,title:双因素认证,desc:增强账号安全性,type:toggle,value:},{id:5,icon:,title:登录设备,desc:管理已登录设备,type:arrow,value:3台},{id:6,icon:,title:修改密码,desc:定期更换密码以保障安全,type:arrow,value:},]}]privatealignNames:string[][Start左对齐,Center居中,End右对齐]privatealignValues:HorizontalAlign[][HorizontalAlign.Start,HorizontalAlign.Center,HorizontalAlign.End]build(){Row(){// 左侧演示面板Column({space:20}){Text(alignItems 对齐演示).fontSize(16).fontWeight(FontWeight.Bold).fontColor(#111827)// 切换按钮Row({space:6}){ForEach(this.alignNames,(name:string,idx:number){Text(name).fontSize(11).fontColor(this.activeAlignidx?#3B82F6:#6B7280).backgroundColor(this.activeAlignidx?#EFF6FF:#F3F4F6).borderRadius(6).padding({left:8,right:8,top:5,bottom:5}).onClick(()this.activeAlignidx)})}// 演示容器Column({space:8}){Text(this.alignNames[this.activeAlign]).fontSize(12).fontColor(#9CA3AF).padding({bottom:8}).border({width:{bottom:1},color:#F3F4F6}).width(100%).textAlign(TextAlign.Center)// 三个不同宽度的子项Column({space:8}){Text(短文本).fontSize(14).fontColor(Color.White).backgroundColor(#3B82F6).borderRadius(6).padding({left:12,right:12,top:8,bottom:8})Text(中等长度的文本内容).fontSize(14).fontColor(Color.White).backgroundColor(#8B5CF6).borderRadius(6).padding({left:12,right:12,top:8,bottom:8})Text(这是一段比较长的文本内容用来演示对齐效果).fontSize(14).fontColor(Color.White).backgroundColor(#10B981).borderRadius(6).padding({left:12,right:12,top:8,bottom:8})}.width(100%).alignItems(this.alignValues[this.activeAlign]).animation({duration:250,curve:Curve.EaseInOut})}.width(100%).padding(16).backgroundColor(#F9FAFB).borderRadius(12)// alignSelf 演示Text(alignSelf单个子项覆盖父级对齐).fontSize(14).fontColor(#374151).fontWeight(FontWeight.Medium)Column({space:8}){Text(父级HorizontalAlign.Start左对齐).fontSize(11).fontColor(#9CA3AF).alignSelf(ItemAlign.Center)Text(普通子项跟随父级左对齐).fontSize(13).fontColor(Color.White).backgroundColor(#6B7280).borderRadius(6).padding({left:12,right:12,top:8,bottom:8})Text(alignSelf(Center)覆盖居中).fontSize(13).fontColor(Color.White).backgroundColor(#3B82F6).borderRadius(6).padding({left:12,right:12,top:8,bottom:8}).alignSelf(ItemAlign.Center)Text(alignSelf(End)覆盖右对齐).fontSize(13).fontColor(Color.White).backgroundColor(#8B5CF6).borderRadius(6).padding({left:12,right:12,top:8,bottom:8}).alignSelf(ItemAlign.End)}.width(100%).alignItems(HorizontalAlign.Start).padding(16).backgroundColor(#F9FAFB).borderRadius(12)}.width(400).padding(24).height(100%).backgroundColor(Color.White).border({width:{right:1},color:#F3F4F6})// 右侧设置页示例Column(){Row(){Text(系统设置).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#111827)}.width(100%).padding({left:24,right:24,top:20,bottom:16}).border({width:{bottom:1},color:#F3F4F6})Scroll(){Column({space:16}){ForEach(this.settingGroups,(group:SettingGroup,gIdx:number){Column({space:0}){Text(group.groupTitle).fontSize(12).fontColor(#9CA3AF).fontWeight(FontWeight.Medium).padding({left:4,bottom:8}).alignSelf(ItemAlign.Start)Column({space:0}){ForEach(group.items,(item:SettingItem,iIdx:number){Row({space:12}){// 图标Text(item.icon).fontSize(18).width(36).height(36).textAlign(TextAlign.Center).backgroundColor(#F3F4F6).borderRadius(8)// 文字区Column({space:3}){Text(item.title).fontSize(14).fontColor(#111827).fontWeight(FontWeight.Medium)Text(item.desc).fontSize(12).fontColor(#9CA3AF)}.layoutWeight(1).alignItems(HorizontalAlign.Start)// 右侧操作if(item.typetoggle){Toggle({type:ToggleType.Switch,isOn:this.toggleStates[iIdx%3]}).width(44).height(24).onChange((isOn){this.toggleStates[iIdx%3]isOn})}elseif(item.typearrow){Row({space:4}){if(item.value){Text(item.value).fontSize(13).fontColor(#9CA3AF)}Text(›).fontSize(16).fontColor(#D1D5DB)}}}.width(100%).padding({left:16,right:16,top:12,bottom:12}).border(iIdxgroup.items.length-1?{width:{bottom:1},color:#F9FAFB}:{width:0,color:Color.Transparent})})}.backgroundColor(Color.White).borderRadius(12)}})}.padding({left:20,right:20,top:16,bottom:40})}.layoutWeight(1).scrollBar(BarState.Off)}.layoutWeight(1).height(100%).backgroundColor(#F9FAFB)}.width(100%).height(100%)}}alignSelf单个子项覆盖父级对齐alignItems是全局设置作用于 Column 里所有子项。但如果你想某个子项和其他子项对齐方式不同用alignSelfColumn(){Text(普通子项)// 跟随父级 StartText(我要居中).alignSelf(ItemAlign.Center)// 覆盖父级自己居中Text(我要靠右).alignSelf(ItemAlign.End)// 覆盖父级自己靠右}.alignItems(HorizontalAlign.Start)// 父级左对齐典型应用设置页里忘记密码靠右其他元素左对齐——只需要给忘记密码加.alignSelf(ItemAlign.End)不需要改父级 Column 的alignItems。常见误区TextInput 不响应 alignItemsColumn 里放TextInput发现它不受alignItems控制原因是TextInput默认有自己的宽度适配——它会尝试填满父容器的宽度或者用系统默认宽度。解决方式显式设置宽度TextInput({placeholder:请输入}).width(100%)// 明确宽度alignItems 才能控制对齐写在最后alignItems控制 Column 内所有子项的水平对齐alignSelf让单个子项可以叛逆。两个属性配合基本上能覆盖所有对齐需求。设置页是Start的天下登录页是Center的主场而End则在忘记密码查看全部这种操作链接上频繁出现。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/10/23 14:14:50

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/10/23 14:14:34

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/10/23 14:11:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/10/24 4:32:58

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/10/23 14:10:55

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/10/23 14:14:34

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉