0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙ArkUI之【如何选择布局?】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-05-13 15:37 次阅读

如何选择布局

声明式UI提供了以下9种常见布局,开发者可根据实际应用场景选择合适的布局进行页面开发。

请熟悉鸿蒙开发指导文档:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md](。

布局应用场景
[线性布局](Row、Column)如果布局内子元素超过1个,且能够以某种方式线性排列时优先考虑此布局。
[层叠布局](Stack)组件需要有堆叠效果时优先考虑此布局,层叠布局的堆叠效果不会占用或影响其他同容器内子组件的布局空间。例如[Panel]作为子组件弹出时将其他组件覆盖更为合理,则优先考虑在外层使用堆叠布局。
[弹性布局](Flex)弹性布局是与线性布局类似的布局方式。区别在于弹性布局默认能够使子组件压缩或拉伸。在子组件需要计算拉伸或压缩比例时优先使用此布局,可使得多个容器内子组件能有更好的视觉上的填充容器效果。
[相对布局](RelativeContainer)相对布局是在二维空间中的布局方式,不需要遵循线性布局的规则,布局方式更为自由。通过在子组件上设置锚点规则(AlignRules)使子组件能够将自己在横轴、纵轴中的位置与容器或容器内其他子组件的位置对齐。设置的锚点规则可以天然支持子元素压缩、拉伸,堆叠或形成多行效果。在页面元素分布复杂或通过线性布局会使容器嵌套层数过深时推荐使用。
[栅格布局](GridRow、GridCol)栅格是多设备场景下通用的辅助定位工具,通过将空间分割为有规律的栅格。栅格不同于网格布局固定的空间划分,它可以实现不同设备下不同的布局,空间划分更随心所欲,从而显著降低适配不同屏幕尺寸的设计及开发成本,使得整体设计和开发流程更有秩序和节奏感,同时也保证多设备上应用显示的协调性和一致性,提升用户体验。推荐手机、大屏、平板等不同设备,内容相同但布局不同时使用。
[媒体查询](@ohos.mediaquery)媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。例如根据设备和应用的不同属性信息设计不同的布局,以及屏幕发生动态改变时更新应用的页面布局。
[列表](List)使用列表可以轻松高效地显示结构化、可滚动的信息。在ArkUI中,列表具有垂直和水平布局能力和自适应交叉轴方向上排列个数的布局能力,超出屏幕时可以滚动。列表适合用于呈现同类数据类型或数据类型集,例如图片和文本。
[网格](Grid)网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局。网格布局可以控制元素所占的网格数量、设置子组件横跨几行或者几列,当网格容器尺寸发生变化时,所有子组件以及间距等比例调整。推荐在需要按照固定比例或者均匀分配空间的布局场景下使用,例如计算器、相册、日历等。
[轮播](Swiper)轮播组件通常用于实现广告轮播、图片预览、可滚动应用等。

布局位置

position、offset等属性影响了布局容器相对于自身或其他组件的位置。

定位能力使用场景实现方式
绝对定位对于不同尺寸的设备,使用绝对定位的适应性会比较差,在屏幕的适配上有缺陷。使用[position]实现绝对定位,设置元素左上角相对于父容器左上角偏移位置。在布局容器中,设置该属性不影响父容器布局,仅在绘制时进行位置调整。
相对定位相对定位不脱离文档流,即原位置依然保留,不影响元素本身的特性,仅相对于原位置进行偏移。使用[offset]可以实现相对定位,设置元素相对于自身的偏移量。设置该属性,不影响父容器布局,仅在绘制时进行位置调整。

搜狗高速浏览器截图20240326151344.png

对子元素的约束

image.png

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 组件
    +关注

    关注

    1

    文章

    504

    浏览量

    17790
  • 鸿蒙
    +关注

    关注

    57

    文章

    2305

    浏览量

    42699
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发学习:初探【ArkUI-X】

    **简单来说,ArkTS + ArkUI-X 对标的框架为 flutter,一次代码,编译为 native 全平台运行**
    的头像 发表于 05-13 15:58 965次阅读
    <b class='flag-5'>鸿蒙</b>开发学习:初探【<b class='flag-5'>ArkUI</b>-X】

    鸿蒙ArkUI开发:常用布局【主轴】

    线性布局的子元素在线性方向上(水平方向和垂直方向)依次排列
    的头像 发表于 05-13 17:33 814次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>开发:常用<b class='flag-5'>布局</b>【主轴】

    鸿蒙ArkUI-X跨语言调用说明:【平台桥接开发指南(Android)】

    平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。本文主要介绍A
    的头像 发表于 05-25 16:26 602次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>-X跨语言调用说明:【平台桥接开发指南(Android)】

    4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营健康生活实战》

    《HarmonyOS ArkUI入门训练营健康饮食应用》是面向入门开发者打造的实战课程系列。特邀华为终端BG高级开发工程师作为本次训练营讲师,以健康饮食为例,开展技术教学及实战案例分享,助力入门
    发表于 01-05 11:49

    OpenHarmony使用ArkUI Inspector分析布局

    多余的嵌套层次,缩短组件刷新耗时。本文会介绍如何使用ArkUI Inspector工具分析布局,提示应用响应性能。 ● 关键字:列举本文相关的关键字:OpenHarmony HarmonyOS 鸿蒙
    发表于 09-04 15:27

    鸿蒙应用ui布局

    请问,在用java开发鸿蒙应用布局UI时,怎么才能全屏布局(不显示labelb标题)
    发表于 09-20 22:09

    鸿蒙强势布局2021 库克对苹果做出战略布局

    随着华为对鸿蒙系统的进一步战略布局,苹果却也作出了战略布局,看似是在阻挡鸿蒙的发展。
    的头像 发表于 01-20 11:24 1360次阅读
    <b class='flag-5'>鸿蒙</b>强势<b class='flag-5'>布局</b>2021 库克对苹果做出战略<b class='flag-5'>布局</b>

    鸿蒙ArkUI开发-Tabs组件的使用

    鸿蒙ArkUI开发-Tabs组件的使用
    的头像 发表于 01-19 16:01 1716次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>开发-Tabs组件的使用

    鸿蒙ArkUI开发-应用添加弹窗

    弹窗是一种模态窗口,通常用来展示用户当前需要的或用户必须关注的信息或操作。在弹出框消失之前,用户无法操作其他界面内容。ArkUI为我们提供了丰富的弹窗功能
    的头像 发表于 01-24 17:22 601次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>开发-应用添加弹窗

    鸿蒙ArkUI开发实战:eTS版【笑话app】

    制作一款笑话app,使用ArkUI
    的头像 发表于 03-25 16:04 414次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>开发实战:eTS版【笑话app】

    鸿蒙ArkUI:【从代码到UI显示的整体渲染流程】

    方舟开发框架(简称ArkUI)是鸿蒙开发的UI框架,提供如下两种开发范式,我们 **只学声明式开发范式**
    的头像 发表于 05-13 16:06 779次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>:【从代码到UI显示的整体渲染流程】

    鸿蒙跨平台框架:【ArkUi-X】创建工程

    鸿蒙推出了鸿ArkUi-X 框架所以就写个文章分享一下
    的头像 发表于 05-13 17:48 840次阅读
    <b class='flag-5'>鸿蒙</b>跨平台框架:【<b class='flag-5'>ArkUi</b>-X】创建工程

    鸿蒙ArkUI开发:常用布局【相对布局

    相对布局可以让子元素指定兄弟元素或父容器作为锚点,基于锚点做位置布局
    的头像 发表于 05-14 20:50 502次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>开发:常用<b class='flag-5'>布局</b>【相对<b class='flag-5'>布局</b>】

    鸿蒙ArkUI-X跨平台开发:【 编写第一个ArkUI-X应用】

    通过构建一个简单的ArkUI页面跳转示例,快速了解资源创建引用,路由代码编写和UI布局编写等应用开发流程。
    的头像 发表于 05-21 17:36 629次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>-X跨平台开发:【 编写第一个<b class='flag-5'>ArkUI</b>-X应用】

    鸿蒙ArkUI-X跨语言调用说明:【平台桥接(@arkui-x.bridge)】

    平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。
    的头像 发表于 05-21 15:09 653次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b>-X跨语言调用说明:【平台桥接(@<b class='flag-5'>arkui</b>-x.bridge)】