当前位置: 首页 > news >正文

HarmonyOS:线性布局(Row/Column)

✅ 概述总结

        线性布局是界面开发中最基础、最常用的布局方式,通过 Row(水平)和 Column(垂直)容器实现子元素的有序排列。它支持灵活的对齐、间距设置与自适应布局,适用于构建结构清晰的 UI。

🧭 核心概念一览表

概念说明
主轴子元素排列方向:
• Row → 水平(➡️)
• Column → 垂直(⬇️)
交叉轴与主轴垂直的方向:
• Row → 垂直
• Column → 水平
space设置主轴上相邻子元素之间的等间距
justifyContent主轴对齐方式(6种)
alignItems交叉轴对齐方式(Start / Center / End)
alignSelf单个子元素覆盖 alignItems 的对齐设置
Blank自动填充主轴空白空间,实现拉伸效果
layoutWeight按权重分配主轴剩余空间
百分比宽度固定占比,响应不同屏幕尺寸

🔖 主轴对齐方式:justifyContent

对齐方式图解示意说明
FlexAlign.Start🔳  🔳  🔳  ⠀⠀→起始端对齐,首个元素贴边
FlexAlign.Center→  🔳  🔳  🔳  ←居中对齐,前后留白相等
FlexAlign.End←  🔳  🔳  🔳尾部对齐,末尾元素贴边
SpaceBetween🔳      🔳      🔳首尾贴边,中间间距均等
SpaceAround⠀ 🔳   🔳   🔳  元素周围间距相等,首尾为半距
SpaceEvenly🔳   🔳   🔳所有间距完全一致(含首尾)

🎯 交叉轴对齐方式:alignItems

容器类型对齐属性图解说明
Column
(主轴: 垂直)
HorizontalAlign.Start← 🔳
   🔳
   🔳
左对齐
HorizontalAlign.Center    🔳
    🔳
    🔳
水平居中
HorizontalAlign.End       🔳→
       🔳
       🔳
右对齐
Row
(主轴: 水平)
VerticalAlign.Top🔳  🔳  🔳 ↑顶部对齐
VerticalAlign.Center  🔳
🔳  🔳 ↓
垂直居中
VerticalAlign.Bottom
      🔳  🔳  🔳
底部对齐

💡 alignSelf 可单独设置某子元素的对齐方式,优先级高于 alignItems

🌟 自适应布局三大技巧

1. 自适应拉伸 —— 使用 Blank

Row() {Text('Bluetooth')Blank() // 自动填充空白Toggle({ type: ToggleType.Switch })
}
.width('100%')

2. 自适应缩放 —— layoutWeight

Row() {Column().layoutWeight(1).backgroundColor(0xF5DEB3)Column().layoutWeight(2).backgroundColor(0xD2B48C)Column().layoutWeight(3).backgroundColor(0xF5DEB3)
}.height('30%')

📊 比例分配主轴空间: 1:2:3 → 占比分别为 1/6, 2/6, 3/6
🖼️ 图示:[🔳] [███] [█████](按权重扩展)

3. 百分比布局 —— 固定占比

Row() {Column().width('20%').backgroundColor(0xF5DEB3)Column().width('50%').backgroundColor(0xD2B48C)Column().width('30%').backgroundColor(0xF5DEB3)
}

📏 固定宽度比例:始终为 2:5:3,响应屏幕变化
🖼️ 图示:[%%] [%%%%%] [%%%]

4. 自适应延伸 —— 滚动支持

✅ 垂直滚动(Column + Scroll)
Scroll(this.scroller) {Column() {ForEach(this.arr, (item) => {Text(item.toString()).width('90%').height(150).margin({ top: 10 })})}
}
.scrollable(ScrollDirection.Vertical)
.scrollBar(BarState.On)
.edgeEffect(EdgeEffect.Spring)
✅ 水平滚动(Row + Scroll)
Scroll(this.scroller) {Row() {ForEach(this.arr, (item) => {Text(item.toString()).height('90%').width(150).margin({ left: 10 })})}
}
.scrollable(ScrollDirection.Horizontal)

📌 支持滚动条常驻、颜色、宽度及回弹效果设置。

📚 知识点详解

  • 主轴与交叉轴:主轴决定排列方向,交叉轴用于对齐控制。理解二者关系是布局核心。

  • justifyContent 与 alignItems:分别控制主轴和交叉轴对齐行为,影响整体布局结构。

  • 自适应策略(Blank/layoutWeight/百分比):根据场景选择合适方式实现跨设备兼容性。

⚠️ 提示:避免过度嵌套以提升性能,合理使用边界约束与渲染优化语法。

http://www.dtcms.com/a/593494.html

相关文章:

  • 鸿蒙Next学习解析之针对PC2in1设备的窗口管理新增支持主窗的尺寸记忆功能
  • 【大数据技术02】统计学和模型
  • Python数据挖掘之回归
  • 数据管理技术发展的3个阶段
  • 进网站后台显示空白购买东西网站怎么做
  • 做网站的公司都有哪些模板制作方法
  • .NET线程池ThreadPool.QueueUserWorkItem
  • Python爬虫进阶:面向对象设计与反爬策略实战
  • 河北省建设厅网站站长万网主体新增网站备案需要是滴么
  • windows 11 系统 nvm安装详细教程 (踩坑分享)
  • VMMap 学习笔记(8.3):VMMap 窗口全解析——内存类型、指标含义、颜色视图怎么读
  • 西安网站建设开发公司怎么样1688网
  • 南京做网站品牌2018 84号建设厅网站
  • 整体设计 全面梳理复盘 之29 Transformer 九宫格三层架构 Designer 全部功能定稿(初稿)
  • 再看软考与职称及软考的价值
  • pycharm连接远程服务器
  • libstdc++.so.6 version `GLIBCXX_3.4.29‘ not found
  • STM32 ADC底层原理与寄存器配置详解
  • 互联科技行业网站wordpress+纯净主题
  • 短剧广告联盟APP盈利模式分析:B 端合作商如何通过系统实现收益增长
  • 「腾讯云NoSQL」技术之向量数据库篇:自研分布式向量数据库,实现毫秒级时序一致备份的挑战和实践
  • seo站长助手网站设计师加油站
  • 基于Springboot的游戏后台管理系统a803t(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
  • springboot在线课堂教学辅助系统07741
  • 成都网站制作中国互联国家企业信用信息公示系统山东
  • C++ 哈希
  • Rust编程问题修复:如何解决“no method named partition_at_mut found”错误
  • OrangePi(运行 Ubuntu 22.04)安装 ROS 2 Humble
  • Vue3:详解toRef
  • Nvm 实现vue版本切换