ArkTS-ArkUI组件-Column、Row容器组件

一.官方文档 

ColumnRow 来看看官方文档吧!

二. 基本语法

Column(value?: {space?: string | number})——》沿垂直方向布局的容器。

Row(value?:{space?: number | string })——》沿水平方向布局容器。 

说白了就是在容器内部元素是竖着放还是横着放。 

 先来介绍两个概念:

主轴、交叉轴:

我们将容器内元素排列方向上的轴线称为主轴,与主轴垂直的轴线称之为交叉轴。

主轴:在Column容器中的子组件是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向;在Row容器中的组件是按照从左到右的水平方向布局的,其主轴的方向是水平方向 

交叉轴: 与主轴垂直相交的轴线,如果主轴是垂直方向,则交叉轴就是水平方向;如果主轴是水平方向,则交叉轴是垂直方向。

参数space:

参数名

参数类型

必填

参数描述

space

string | number

元素主轴方向上的间距。

从API version 9开始,space为负数或者justifyContent设置为FlexAlign.SpaceBetween、FlexAlign.SpaceAround、FlexAlign.SpaceEvenly时不生效。

默认值:0

说明:

可选值为大于等于0的数字,或者可以转换为数字的字符串。

 一起来看一下吧:

Column:垂直方向间距

Row:水平方向间距

了解了其基本参数,再让我们看看它的其他属性吧 

 三.属性

先来总体介绍一下吧:

属性名称

描述

justifyContent

设置子组件在主轴方向上的对齐格式。

alignItems

设置子组件在交叉轴方向上的对齐格式。

 justifyContent:

主轴方向对齐格式

名称

参数类型

描述

justifyContent

FlexAlign

设置子组件在主轴方向上的对齐格式。

默认值:FlexAlign.Start

从API version 9开始,该接口支持在ArkTS卡片中使用。

先看一下FlexAlign的枚举说明吧:

名称

描述

Start

元素在主轴方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。

Center

元素在主轴方向中心对齐,第一个元素与行首的距离与最后一个元素与行尾距离相同。

End

元素在主轴方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。

SpaceBetween

Flex主轴方向均匀分配弹性元素,相邻元素之间距离相同。第一个元素与行首对齐,最后一个元素与行尾对齐。

SpaceAround

Flex主轴方向均匀分配弹性元素,相邻元素之间距离相同第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半

SpaceEvenly

Flex主轴方向均匀分配弹性元素,相邻元素之间的距离、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样

start: 

Start

元素在主轴方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。

Center:

Center

元素在主轴方向中心对齐,第一个元素与行首的距离与最后一个元素与行尾距离相同。

 

 End:

End

元素在主轴方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。

SpaceBetween:

SpaceBetween

Flex主轴方向均匀分配弹性元素,相邻元素之间距离相同。第一个元素与行首对齐,最后一个元素与行尾对齐。

SpaceAround:

SpaceAround

Flex主轴方向均匀分配弹性元素,相邻元素之间距离相同第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半

SpaceEvenly:

SpaceEvenly

Flex主轴方向均匀分配弹性元素,相邻元素之间的距离、第一个元素与行首的间距、最后一个元素到行尾的间距都完全一样

 

 来看一下效果吧:

该属性Column和Row使用的是一样的参数。 再来看一个特殊一点的吧!

alignItems:

名称

参数类型

描述

alignItems

Row容器使用VerticalAlign枚举

Column容器使用HorizontalAlign枚举

设置子组件在交叉轴方向上的对齐格式。

默认值:VerticalAlign.Center

从API version 9开始,该接口支持在ArkTS卡片中使用。

先来看一下VerticalAlign吧:

名称

描述

Top

顶部对齐。

Center

居中对齐,默认对齐方式。

Bottom

底部对齐。

 Top:

Top

顶部对齐。

 

Center:

Center

居中对齐,默认对齐方式。

 

Bottom:

Bottom

底部对齐。

 

 来看一下效果吧:

为Row容器增加了 .alignItems(VerticalAlign.Top)属性之后文字移至交叉轴(即竖直方向)顶部。

HorizontalAlign: 

 先看一下它的枚举说明——》

名称

描述

Start

按照语言方向起始端对齐。

Center

居中对齐,默认对齐方式。

End

按照语言方向末端对齐。

Start:

Start

按照语言方向起始端对齐。

Center:

Center

居中对齐,默认对齐方式。

End:

End

按照语言方向末端对齐。

 看看实际效果吧:

 为Column容器添加了.alignItems(HorizontalAlign.Start)属性后,元素移至交叉轴(即水平方向)最前端。

四.构建页面

案例来自华为文档

构建页面,我们需要对页面进行拆解,先确定页面的布局,再分析页面上的内容分别使用哪些组件来实现。

我们仔细分析这个登录页面。在静态布局中,组件整体是从上到下布局的,因此构建该页面可以使用Column来构建。在此基础上,我们可以看到有部分内容在水平方向上由几个基础组件构成,例如页面中间的短信验证码登录与忘记密码以及页面最下方的其他方式登录,那么构建这些内容的时候,可以在Column组件中嵌套Row组件,继而在Row组件中实现水平方向的布局。

接下来我们开始构建页面吧:

1.插入图片 

还记得图片资源放在哪里吗?

记得经常回顾复习哦!Image

 2.两行文字-文本框

 

3.输入框 

密码栏记得设置输入框的类型哦!

4. 验证与忘记密码——Row(Text)

没有达到想要的效果,加点属性修饰一下吧:

我们想让两个元素水平居于两侧,是在Row容器内部,那就是主轴——》

注意:需要让Row容器宽度占满,否则对其包裹内容宽度修饰是无用的。 

 5.登录按钮——Buton

6. 注册账号与其他方式登录——两个Text

7. 三个方式——Row(Button)

再次强调:记得设置宽度 

8.优化界面 

因为布局比较简单使用放在了最后优化,可以选择边构建边优化。 

代码: 

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

  build() {
    Column({space:10}) {
      Image($r('app.media.huawei'))  //插入图片
        .width(200)           //设置宽度
        .interpolation(ImageInterpolation.High) //设置插值
        .margin({top:30})
      Text('登录界面')
        .fontSize(30)
        .margin({top:30})
        Text('登录账号以使用更多服务')
          .fontSize(20)
          .fontColor(Color.Gray)
      TextInput({placeholder:'账号'})
        .width('80%')
        .height(50)
      TextInput({placeholder:'密码'})
        .width('80%')
        .height(50)
        .type(InputType.Password)
      Row(){
        Text('短信验证码登录')
          .fontColor(Color.Blue)
          .fontSize(15)
        Text('忘记密码')
          .fontColor(Color.Blue)
          .fontSize(15)
      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      Button('登录')
        .width('70%')
        .margin({top:50})
      Text('注册账号')
        .fontColor(Color.Blue)
        .margin(30)
      Text('其他方式登录')
        .fontColor(Color.Gray)
        .fontSize(12)
      Row(){
        Button('方式一',{type:ButtonType.Circle})
          .backgroundColor('#B8B8B8')
          .fontSize(8)
          .borderRadius(30)
        Button('方式二',{type:ButtonType.Circle})
          .backgroundColor('#B8B8B8')
          .fontSize(8)
          .borderRadius(30)
        Button('方式三',{type:ButtonType.Circle})
          .backgroundColor('#B8B8B8')
          .fontSize(8)
          .borderRadius(30)

      }
      .width('100%')
      .justifyContent(FlexAlign.SpaceEvenly)

    }
    .width('100%')

  }
}

五.语录

只要不停的走,回望总会有惊喜!

 夏天到了,不要总呆在空调房里哦!记得劳逸结合哦!!!

  • 32
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值