Harmony之学习Column&Row组件的使用

这篇具有很好参考价值的文章主要介绍了Harmony之学习Column&Row组件的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 概述

一个丰富的页面需要很多组件组成,那么,我们如何才能让这些组件有条不紊地在页面上布局呢?这就需要借助容器组件来实现。

容器组件是一种比较特殊的组件,它可以包含其他的组件,而且按照一定的规律布局,帮助开发者生成精美的页面。容器组件除了放置基础组件外,也可以放置容器组件,通过多层布局的嵌套,可以布局出更丰富的页面。

ArkTS为我们提供了丰富的容器组件来布局页面,本文将以构建登录页面为例,介绍Column和Row组件的属性与使用。
row组件使用,Harmony,学习

2 组件介绍

布局容器概念

线性布局容器表示按照垂直方向或者水平方向排列子组件的容器,ArkTS提供了Column和Row容器来实现线性布局。

  • Column表示沿垂直方向布局的容器。
  • Row表示沿水平方向布局的容器。

主轴和交叉轴概念

在布局容器中,默认存在两根轴,分别是主轴和交叉轴,这两个轴始终是相互垂直的。不同的容器中主轴的方向不一样的。

  1. 主轴:在Column容器中的子组件是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向;在Row容器中的组件是按照从左到右的水平方向布局的,其主轴的方向是水平方向。
    row组件使用,Harmony,学习
  2. 交叉轴:与主轴垂直相交的轴线,如果主轴是垂直方向,则交叉轴就是水平方向;如果主轴是水平方向,则交叉轴是垂直方向。
    row组件使用,Harmony,学习

属性介绍

了解布局容器的主轴和交叉轴,主要是为了让大家更好地理解子组件在主轴和交叉轴的排列方式。

接下来,我们将详细讲解Column和Row容器的两个属性justifyContent和alignItems。
|

属性名称 描述
justifyContent 设置子组件在主轴方向上的对齐格式。
alignItems 设置子组件在交叉轴方向上的对齐格式。

1. 主轴方向的对齐(justifyContent)

子组件在主轴方向上的对齐使用justifyContent属性来设置,其参数类型是FlexAlign。FlexAlign定义了以下几种类型:

  • Start:元素在主轴方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。(默认)
    Column容器
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.Start)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习
Row容器

@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.Start)
      .width('100%')
      // .height('100%')
  }
}

row组件使用,Harmony,学习

  • Center:元素在主轴方向中心对齐,第一个元素与行首的距离以及最后一个元素与行尾距离相同。
    Column容器
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.Center)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习Row容器

@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.Center)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • End:元素在主轴方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。
    Column容器
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.End)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习
Row容器

@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.End)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • SpaceBetween:元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。 第一个元素与行首对齐,最后一个元素与行尾对齐。
    Column容器
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.SpaceBetween)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习
Row容器

@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.SpaceBetween)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • SpaceAround:元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。 第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半。
    Column
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.SpaceAround)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

Row容器

@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.SpaceAround)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • SpaceEvenly:元素在主轴方向等间距布局,无论是相邻元素还是边界元素到容器的间距都一样。
    Column容器
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.SpaceEvenly)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习
Row容器

@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .justifyContent(FlexAlign.SpaceEvenly)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

2.交叉轴方向的对齐(alignItems)

子组件在交叉轴方向上的对齐方式使用alignItems属性来设置。

Column容器的主轴是垂直方向,交叉轴是水平方向,其参数类型为HorizontalAlign(水平对齐),HorizontalAlign定义了以下几种类型:

  • Start:设置子组件在水平方向上按照起始端对齐。
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .alignItems(HorizontalAlign.Start)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • Center(默认值):设置子组件在水平方向上居中对齐。
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .alignItems(HorizontalAlign.Center)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • End:设置子组件在水平方向上按照末端对齐。
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .alignItems(HorizontalAlign.End)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习
Row容器的主轴是水平方向,交叉轴是垂直方向,其参数类型为VerticalAlign(垂直对齐),VerticalAlign定义了以下几种类型:

  • Top:设置子组件在垂直方向上居顶部对齐。
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .alignItems(VerticalAlign.Top)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • Center(默认值):设置子组件在竖直方向上居中对齐。
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .alignItems(VerticalAlign.Center)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习

  • Bottom:设置子组件在竖直方向上居底部对齐。
@Entry
@Component
struct Index {
  @State message: string = 'Hi'

  build() {
      Row() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .alignItems(VerticalAlign.Bottom)
      .width('100%')
      .height('100%')
  }
}

row组件使用,Harmony,学习
接口介绍
接下来,我们介绍Column和Row容器的接口。

容器组件 接口
Column Column(value?:{space?: string number})
Row Row(value?:{space?: string number})

Column和Row容器的接口都有一个可选参数space,表示子组件在主轴方向上的间距。

效果如下:
row组件使用,Harmony,学习

3 参考链接

Column组件的相关API参考:Column组件。
Row组件的相关API参考:Row组件。文章来源地址https://www.toymoban.com/news/detail-789277.html

到了这里,关于Harmony之学习Column&Row组件的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element UI组件中el-col、el-row布局学习笔记

    el-col:列。是Element UI布局中的核心组件,他的作用的将一行分成24个网格,为了方便我们在不同的设备上适配不同的屏幕大小。我们可以通过指定span属性来确定一行中所占的网格数。 el-row:行。包裹在el-col外层,其中可以有无数个el-col。   在正常形态下,:span默认为24。假如

    2024年02月15日
    浏览(51)
  • element中表格组件的row-class-name和class-name属性的使用以及无效处理

    1.这两个属性的使用,row-class-name用在el-table标签上,class-name用在el-table-column标签上。两个属性即可绑定类名也可绑定函数 2.绑定函数时就可以通过条件来决定哪行需要添加样式 3.样式无效处理 样式没有效果的原因在于添加的样式不是全局样式,所以只需要将scoped去除或者自

    2024年01月20日
    浏览(54)
  • 解决Data too long for column ‘xxx‘ at row 1问题以及深入理解mysql的字符串数据类型(char,varchar,enum,text,longtext...)

    今天在测试环境新增数据时,报出如是错误: Data too long for column \\\'apply_service_type\\\' at row 1 。 为了复现这个问题,我特地在本地数据库中增加如下 test 表:

    2023年04月17日
    浏览(49)
  • SQL执行报错Incorrect string value: ‘\xF0\x9F\x98\x81\xF0\x9F...‘ for column ‘XXX‘ at row 1...

    分享一个数据库执行插入和修改语句可能会出现的bug Incorrect string value: ‘xF0x9Fx98x81xF0x9F…’ for column ‘name’ at row 1… 再来看下实际项目中服务器报错打印的日志 数据库某字段设置的是 utf8字符集 ,在执行插入或修改语句时该字段传入的值是 非utf8格式(表情或特殊字符

    2024年02月07日
    浏览(66)
  • Vue(element ui)中行操作row参数的使用

            在使用element ui或Vue中当我们要对表格中的数据按行进行特殊操作或标记时,通常通过在vue中methods方法中操作row参数来访问该行的索引或是单元格中的数据进行对应操作。 样式表格中 Vue中  通过row.rowIndex===?可以访问当前行的索引,就可以通过指定 Table 组件的ro

    2024年02月12日
    浏览(30)
  • row_number 和 cte 使用实例:按照队列进行数据抵消

    今天无聊的翻了翻以前的论坛的帖子。。。嗯,想把一些没有什么价值的消息记录给删除掉,就是那些专家分获取记录。 毕竟,现在论坛已经改名叫社区了,也取消了专家分这个设置了。 在进行记录删除前,老顾觉得,有些比较有意思的问题,还是把记录保留下来,比在所

    2024年02月16日
    浏览(37)
  • PostMan使用之POST请求Body中row的JSON数据内容设置换行

    在使用postman或者APIfox的时候发现无法实现换行,这个时候我去网上查阅了很多资料找到了,分享给兄弟们 1、请你别悄悄松开你的梦想,迟早有—天它会在你手里发光。 2、曾经拥有的,不要放弃;已经得到的,更要珍惜;属于别人的,不可贪取;想要得到的,必须努力。但最重

    2024年01月24日
    浏览(40)
  • MySQL报错:ERROR 1118 (42000): Row size too large. 或者 Row size too large (> 8126).

    今天拿到一个建语句时,大概二百多个字段,然后大部分类型是 string 的,要求建 MySQL 的表。首先将 string 替换为 varchar(xx),然后执行了一下语句,报错如下所示: ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhe

    2023年04月09日
    浏览(50)
  • Flutter Row 实例 —— 新手礼包

    大家好,我是 17。 本文在 3.31 日全站综合热榜第一。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包 Flutter TextField UI 实例 —— 新手礼包 Flutter TextField 交互实例 —— 新手礼包 本篇介绍 Row 的用法,用实例讲解 flex 弹性布局

    2024年02月03日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包