ArkUI-容器组件

1 ROW组件

沿水平方向布局容器。可以包含子组件。

Row(value?:{space?:string | number})

参数:

参数名

参数类型

必填

默认值

参数描述

space

string | number

0

横向布局元素间距

属性:

名称

参数类型

默认值

描述

alignItems

VerticalAlign

VerticalAlign.Center

在垂直方向上子组件的对齐格式,

justifycontent

FlexAlign

FlexAlign.Start

设置子组件在水平方向上的对齐格式。

示例:

//@Entry装饰器 入口组件
@Entry
  //@Component装饰器 自定义组件(一个一个独立的模块)
@Component
struct Index { //自定义组件 Index组件的名称
  @State title: string = "你好!";
  build(){
    //build中的row组件只能写一个,多个写在row内部
    // {space:10} 子组件的间距
    Row({space:10}){
      //添加其他组件
      // Button('1')
      // Button('2')
      // Button('3')
      // 嵌套Row()
      Row()
        .width('30%')
        .height(50)
        .backgroundColor('red')
      Row()
        .width('30%')
        .height(50)
        .backgroundColor('green')
      Row()
        .width('30%')
        .height(50)
        .backgroundColor('blue')
    }
      .width('100%')
      .height(200)
      .border({width:2})
      .alignItems(VerticalAlign.Top)
      //垂直方向的对齐格式VerticalAlign.top /VerticalAlign.center /VerticalAlign.bottom
      .justifyContent(FlexAlign.SpaceEvenly)
      //水平方向的对齐方式
      // FlexAlign.Start FlexAlign.center FlexAlign.End 左中右
      //FlexAlign.SpaceBetween 两端对齐
      //FlexAlign.SpaceAround 左右间距相同
      //FlexAlign.SpaceEvenly 间隔相同
  }
}

2 Column组件

沿垂直方向布局的容器。可以包含子组件。

Column(value?:{space?:string | number})

参数:

参数名

参数类型

必填

默认值

参数描述

space

string | number

0

纵向布局元素间距

属性:

名称

参数类型

默认值

描述

alignltems

HorizontalAlign

VerticalAlign.Center

设置子组件在水平方向上的对齐格式

justifyContent8+

FlexAlign

FlexAlign.Start

设置子组件在垂直方向上的对齐格式

示例:

@Entry //@Entry装饰器 入口组件
@Component ///@Component装饰器 自定义组件
struct Index { //自定义组件 Index组件的名称
  @State title: string = "hello world";
  //UI描述
  build(){
    Column({space:10}){//space:10 设置子组件的间距
      //添加子组件
      Button('click1')
      Button('click2')
      Button('click3')
    }
      .width('100%')
      .height(200)
      .border({width:2})
      //   添加对齐方式(水平方向对齐)
      // 左对齐
      .alignItems(HorizontalAlign.Start)
      // 居中对齐(默认值)
      // .alignItems(HorizontalAlign.Center)
      // 右对齐
      // .alignItems(HorizontalAlign.End)
      //添加对齐方式-垂直方向对齐
      // 上对齐
      .justifyContent(FlexAlign.Start)
      // 居中对齐
      .justifyContent(FlexAlign.Center)
      // 下对齐
      .justifyContent(FlexAlign.End)
      // 两端对齐
      .justifyContent(FlexAlign.SpaceBetween)
      // 元素左右外边距相等
      .justifyContent(FlexAlign.SpaceAround)
       // 元素所有间距相同
      .justifyContent(FlexAlign.SpaceEvenly)
  }
}

3 Flex组件

以弹性方式布局子组件的容器组件。

子组件 可以包含子组件。

接口
Flex(value?:{ direction?: FlexDirection, wrap?: Flexwrap, justifycontent?.FlexAlign,alignItems?: ItemAlign,aligncontent?: FlexAlign })

参数:

参数名

参数类型

必填

默认值

参数描述

direction

FlexDirection

FlexDirection.Row

子组件在Flex容器上排列的方向,即主轴的方向。

wrap

FlexWrap

FlexWrap.NoWrap

Flex容器是单行/列还是多行列排列。

justifyContent

FlexAlign

FlexAlign.Start

子组件在Flex容器主轴上的对齐格式。

alignltems

ItemAlign

ltemAlign.Stretch

子组件在Flex容器交叉轴上的对齐格式。

alignContent

FlexAlign

FlexAlign.Start

交叉轴中有额外的空间时多行内容的对齐方式。仅在wrap为Wrap或WrapReverse下生效

3.1 direction

设置子组件在flex容器中的排列方式

语法:

 Flex({direction:FlexDirection.属性值}){
     
 }

属性值:

Row:水平方向排列

Column:垂直方向排列

RowReverse:水平方向逆向排列

ColumnReverse:垂直方向逆向排列

示例:

@Entry //@Entry装饰器 入口组件
@Component ///@Component装饰器 自定义组件
struct Index { //自定义组件 Index组件的名称
  @State title: string = "hello world";
  //UI描述
  build(){
    Column({space:10}) {
      //子组件在Flex容器上排列的方向,即主轴的方向
      // direction
      // direction:FlexDirection.Row 横向排列
      // direction:FlexDirection.Column 纵向排列
      Flex({direction:FlexDirection.Row}){
        Text('1')
          .width('20%')
          .height(50)
          .backgroundColor('red')
        Text('2')
          .width('20%')
          .height(50)
          .backgroundColor(0x904523)
        Text('3')
          .width('20%')
          .height(50)
          .backgroundColor('green')
        Text('4')
          .width('20%')
          .height(50)
          .backgroundColor(0x123458)
      }
        .width('90%')
        .height(100)
        // 单词
        .backgroundColor('red')
        // #16进制
        .backgroundColor('#F00')
        // 0X + 16进制
        .backgroundColor(0X0F0)
    }
      .width('100%')
      .margin({top:10})
  }
}
3.2 wrap

设置子组件在flex容器中的排列方式

语法:

Flex({wrap:FlexWrap.属性值}){
     
 }

属性值:

Warp:换行

NoWarp:不换行

WrapReverse 换行逆向

示例:

@Entry //@Entry装饰器 入口组件
@Component ///@Component装饰器 自定义组件
struct Index { //自定义组件 Index组件的名称
  @State title: string = "hello world";
  //UI描述
  build(){
    Column({space:10}) {
      // warp 设置flex容器单行/多行排列
      // wrap:FlexWrap.Wrap 换行
      //wrap:FlexWrap.NoWrap 不换行
      // wrap:FlexWrap.WrapReverse 换行逆向
      Flex({wrap:FlexWrap.WrapReverse}){
        Text('1')
          .width('50%')
          .height(50)
          .backgroundColor('red')
        Text('2')
          .width('20%')
          .height(50)
          .backgroundColor(0x904523)
        Text('3')
          .width('20%')
          .height(50)
          .backgroundColor('green')
        Text('4')
          .width('20%')
          .height(50)
          .backgroundColor(0x123458)
      }
        .width('90%')
        .height(100)
        // 单词
        .backgroundColor('red')
        // #16进制
        .backgroundColor('#F00')
        // 0X + 16进制
        .backgroundColor(0X0F0)
    }
      .width('100%')
      .margin({top:10})
  }
}
3.3 justifyContent

设置子组件在flex容器中的主轴的对齐方式

语法:

Flex({justifyContent:FlexAlign.属性值}){
     
 }

属性值:

  • Start 顶部对齐
  • Center 居中对齐
  • End 尾部对齐
  • SpaceBetween 两端对齐
  • SpaceAround 左右外边距相同
  • SpaceEvenly 间距相同

示例:

@Entry //@Entry装饰器 入口组件
@Component ///@Component装饰器 自定义组件
struct Index { //自定义组件 Index组件的名称
  @State title: string = "hello world";
  //UI描述
  build(){
    Column({space:10}) {
      // justifyContent 设置flex容器在主轴的对齐方式
      // justifyContent:FlexAlign.Start 顶部对齐
      // justifyContent:FlexAlign.Center 居中对齐
      // justifyContent:FlexAlign.End 尾部对齐
      // justifyContent:FlexAlign.SpaceBetween 两端对齐
      // justifyContent:FlexAlign.SpaceAround 左右外边距相同
      // justifyContent:FlexAlign.SpaceEvenly 间距相同
      Flex({justifyContent:FlexAlign.SpaceEvenly}){
        Text('1')
          .width('20%')
          .height(50)
          .backgroundColor('red')
        Text('2')
          .width('20%')
          .height(50)
          .backgroundColor(0x904523)
        Text('3')
          .width('20%')
          .height(50)
          .backgroundColor('green')
        Text('4')
          .width('20%')
          .height(50)
          .backgroundColor(0x123458)
      }
        .width('90%')
        .height(100)
        // 单词
        .backgroundColor('red')
        // #16进制
        .backgroundColor('#F00')
        // 0X + 16进制
        .backgroundColor(0X0F0)
    }
      .width('100%')
      .margin({top:10})
  }
}
3.4 alignltems

设置子组件在flex容器中的交叉轴的对齐方式

语法:

Flex({alignItems:ItemAlign.属性值}){
     
 }

属性值:

  • Start 顶部对齐
  • Center 居中对齐
  • End 底部对齐
  • Stretch 伸展,拉伸到容器尺寸

示例:

@Entry //@Entry装饰器 入口组件
@Component ///@Component装饰器 自定义组件
struct Index { //自定义组件 Index组件的名称
  @State title: string = "hello world";
  //UI描述
  build(){
    Column({space:10}) {
      // alignltems 设置子组件在flex容器中的交叉轴的对齐方式
      // alignItems:ItemAlign.Start 顶部对齐
      // alignItems:ItemAlign.Center 居中对齐
      // alignItems:ItemAlign.End  底部对齐
      // alignItems:ItemAlign.Stretch 伸展,拉伸到容器尺寸
      Flex({alignItems:ItemAlign.Stretch}){
        Text('1')
          .width('20%')
          .height(30)
          .backgroundColor('red')
        Text('2')
          .width('20%')
          .height(40)
          .backgroundColor(0x904523)
        Text('3')
          .width('20%')
          .height(50)
          .backgroundColor('green')
      }
        .width('90%')
        .height(100)
        // 单词
        .backgroundColor('red')
        // #16进制
        .backgroundColor('#F00')
        // 0X + 16进制
        .backgroundColor(0X0F0)
    }
      .width('100%')
      .margin({top:10})
  }
}

4 List

列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。

子组件
包含ListItem子组件
接口
List(value?:{space?: number | string, initialIndex?: number, scroller?:Scro11er})

5 ListItem

6 Tabs

通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。

子组件
包含子组件Tabcontent。

接口说明

Tabs(value?: {barPosition?: BarPosition, index?: number, controller?:Tabscontro1ler})

参数:

参数名

参数类型

必填

默认值

参数描述

barPosition

BarPosition

BarPosition.Start

指定页签位置来创建Tabs容器组件。

index

number

0

指定初次初始页签索引。

controller

TabsController

-

设置Tabs控制器。

BarPosition枚举说明

名称

描述

Start

vertical属性方法设置为true时,页签位于容器左侧;vertical属性方法设置为false时,页签位于容器顶部。

End

vertical属性方法设置为true时,页签位于容器右侧;vertical属性方法设置为false时,页签位于容器底部。

属性

不支持触摸热区设置。

名称

参数类型

默认值

描述

vertical

boolean

false

设置为false是为横向Tabs,设置为true时为纵向Tabs。

scrollable

BarMode

true

设置为true时可以通过滑动页面进行页面切换,为false时不可滑动切换页面。

barMode

BarMode

BarMode.Fixed

TabBar布局模式,具体描述见BarMode枚举说明。

barWidth

Length

-

TabBar的宽度值。

barHeight

Length

-

TabBar的高度值。

animationDuration

number

200

TabContent滑动动画时长,

BarMode枚举说明

名称

描述

Scrollable

TabBar使用实际布局宽度,超过总长度后可滑动。

Fixed

所有TabBar平均分配宽度。

事件

名称

描述

onChange(event: (index: number)=>

void)

Tab页签切换后触发的事件。-index:tab标签的索引值。

TabsController

Tabs组件的控制器,用于控制Tabs组件进行页签切换。

导入对象

controller:TabsController = new TabsController()

changeindex

控制Tabs切换到指定页签

changelndex(value: number): void

7 TabContent

仅在Tabs中使用,对应一个切换页签的内容视图。

接口
Tabcontent()

属性

名称

参数类型

描述

tabBar

string | Resource | {icon?:string | Resource,text?:string | Resource} | CustomBuilder8+

设置TabBar上显示内容。CustomBuilder:构造器,内部可以传入组件(API8版本以上适用)。说明:如果icon采用svg格式图源,则要求svg图源删除其自有宽高属性值。如采用带有自有宽高属性的svg图源,icon大小则是svg本身内置的宽高属性值大小。

8 Swiper

滑块视图容器,提供子组件滑动轮播显示的能力。

子组件
可以包含子组件。
接口
Swiper(controller?:SwiperController)

参数

参数名

参数类型

必墳

参数描述

controller

SwiperController

给组件绑定一个控制器,用来控制组件翻页

属性

名称

参数类型

描述

index

number

设置当前在容器中显示的子组件的索引值。默认值:0

autoPlay

boolean

子组件是否自动播放,自动播放状态下导航点不可操作。默认值:false

interval

number

使用自动播放时播放的时间间隔,单位为毫秒。默认值:3000

indicator

boolean

是否启用导航点指示器。默认值:true

loop

boolean

是否开启循环。设置为true时表示开启循环,在LazyForEach懒循环加载模式下加载的组件数量建议大于5个。默认值:true

duration

number

子组件切换的动画时长,单位为毫秒。默认值:400

vertical

boolean

是否为纵向滑动。默认值:false

itemSpace

number string

设置子组件与子组件之间间隙。默认值:0

displayMode

SwiperDisplayMode

设置子组件显示模式。默认值:SwiperDisplayMode.Stretch

cachedCount8+

number

设置预加载子组件个数。默认值:1

disableSwipe8+

boolean

禁用组件滑动切换功能,默认值:false

displayCount8+

number|string

设置一页中显示子组件的个数,设置为“auto”时等同于

SwiperDisplayMode.AutoLinear的显示效果。默认值:1

effectMode8+

EdgeEffect

设置滑动到边缘时的显示效果。默认值:EdgeEffect.Spring

curve8+

Curve|string

设置Swiper的动画曲线,默认为淡入淡出曲线

indicatorStyle8+

{left?: Length,top?:Length,right?:Length,bottom?: Length,size?:Length,mask?: boolean,color?:ResourceColor,selectedColor?:ResourceColor}

设置导航点样式:-left: 设置导航点距离Swiper组件左边的距离。- top: 设置导航点距离Swiper组件顶部的距离。-right: 设置导航点距离Swiper组件右边的距离。-bottom:设置导航点距离Swiper组件底部的距离。-size:设置导航点的直径。-mask: 设置是否显示导航点蒙层样式。一color: 设置导航点的颜色。-selectedcolor:设置选中的导航点的颜色

9 Grid

网格容器,由“行”和“列”分割的单元格所组成,通过指定”项目”所在的单元格做出各种各样的布局。

子组件
包含GridItem子组件。
接口
Grid(scroller?:scroller)

参数:

参数名

参数类型

必填

参数描述

scroller

Scroller

可滚动组件的控制器,用于与可滚动组件进行绑定

属性

名称

参数类型

描述

columnsTemplate

string

设置当前网格布局列的数量,不设置时默认1列。例如,"1fr 1fr 2fr'是将父组件分3列,将父组件允许的宽分为4等份,第一列占1份,第二列占1份,第三列占2份。默认值:'1fr'

rowsTemplate

string

设置当前网格布局行的数量,不设置时默认1行。例如,"1fr 1fr 2fr”是将父组件分三行,将父组件允许的高分为4等份,第一行占1份,第二行占一份,第三行占2份。默认值:'1fr

columnsGap

Length

设置列与列的间距。默认值:0

rowsGap

Length

设置行与行的间距,默认值:0

scrollBar

BarState

设置滚动条状态。默认值:BarState.0ff

scrollBarColor

string |

number |

Color

设置滚动条的颜色。

scrollBarWidth

string |

number

设置滚动条的宽度。

cachedCount

number

设置预加载的Gridltem的数量,具体使用可参考减少应用白块说明。默认值:1

editMode8+

boolean

是否进入编辑模式,进入编辑模式可以拖拽Grid组件内部Gridltem。默认值:false

10 GridItem

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部