当前位置:   article > 正文

鸿蒙系统ArkTS语言入门—容器和组件的使用_鸿蒙arkts语言容器

鸿蒙arkts语言容器

Column与Row

由之前的介绍可知,我们可以通过Column和Row容器来对页面进行以一个简单的布局,划分不同的功能分区,以搭建一个完整的页面,接下来我将介绍它更多的属性,使其在使用中更好的对页面进行排布划分。

首先如图

图片

我们可以看到,Column和Row都有一个可选参数“space”,space的类型可以是string或number类型,space的作用是调节其在主轴上子组件之间的距离(Column和Row的主轴分别为纵向和横向),举个例子:

  1. Column(){
  2. Test($r('app.string.orther_login_method'))
  3. .fontsize(50)
  4. Row(){
  5. Image($r('app.media.method1'))
  6. Image($r('app.media.method2'))
  7. Image($r('app.media.method3'))
  8. }
  9. }

该代码显示效果如下:

图片

但在加入Column和Row的space参数后

  1. Column({spaec:30}){
  2. Test($r('app.string.orther_login_method'))
  3. .fontsize(50)
  4. Row({spaec:20}){
  5. Image($r('app.media.method1'))
  6. Image($r('app.media.method2'))
  7. Image($r('app.media.method3'))
  8. }
  9. }

该效果就呈现为:

图片

比较后不难发现,在纵向和横向上,各个组件之间的距离发生的变化

图片

这个便是space参数的用法。

接下来,还要介绍这个两个容器的重要属性“justifyContent”以及“alignItems”

图片

其中,justifyContent的数据类型为FlexAlign,它的具体类型有以下几个:

图片

接下来,我为大家提供前三个代码示例:

  1. Column(){
  2.   Test($r('app.string.orther_login_method'))
  3.   .fontsize(50)
  4.   Row(){
  5.     Image($r('app.media.method1'))
  6.     Image($r('app.media.method2'))
  7.     Image($r('app.media.method3'))
  8.   }
  9.   .justifyContent(FlexAlign.Start)//首端对齐
  10.   .width('100%')
  11. }

效果如图:

图片

同理:

  1. Column(){
  2.   Test($r('app.string.orther_login_method'))
  3.   .fontsize(50)
  4.   Row(){
  5.     Image($r('app.media.method1'))
  6.     Image($r('app.media.method2'))
  7.     Image($r('app.media.method3'))
  8.   }
  9.   .justifyContent(FlexAlign.End)//末端对齐
  10.   .width('100%')
  11. }

效果如图:

图片

同理:

  1. Column(){
  2.   Test($r('app.string.orther_login_method'))
  3.   .fontsize(50)
  4.   Row(){
  5.     Image($r('app.media.method1'))
  6.     Image($r('app.media.method2'))
  7.     Image($r('app.media.method3'))
  8.   }
  9.   .justifyContent(FlexAlign.Center)//中心对齐
  10.   .width('100%')
  11. }

效果如图:

图片

接下来,我们来介绍alignItems属性,该属性可以控制该容器的子组件在交叉轴上(Column与Row的交叉轴分别为横向与纵向)上的排列方式,alignItems属性在这两个容器中的参数类型并不相同,其中Column容器的参数为HorizontalAlign(水平对齐),而Row容器的参数为VerticalAlign(垂直对齐),它们分别由如下几个排列方式:

图片

图片

下面,我将以Column容器为例,介绍它的alignItems属性的用法:

  1. Column(){
  2.   Test($r('app.string.orther_login_method'))
  3.   .fontsize(50)
  4.   Row(){
  5.     Image($r('app.media.method1'))
  6.     Image($r('app.media.method2'))
  7.     Image($r('app.media.method3'))
  8.   }
  9. }
  10. .alignItems(HorizontalAlign.Start)//首端对齐
  11. .width('100%')

效果如图,可以发现子组件排列在了Column容器的交叉轴的最左端:

图片

同理:

  1. Column(){
  2.   Test($r('app.string.orther_login_method'))
  3.   .fontsize(50)
  4.   Row(){
  5.     Image($r('app.media.method1'))
  6.     Image($r('app.media.method2'))
  7.     Image($r('app.media.method3'))
  8.   }
  9. }
  10. .alignItems(HorizontalAlign.Center)//中心对齐
  11. .width('100%')

效果如图:

图片

同理:

  1. Column(){
  2.   Test($r('app.string.orther_login_method'))
  3.   .fontsize(50)
  4.   Row(){
  5.     Image($r('app.media.method1'))
  6.     Image($r('app.media.method2'))
  7.     Image($r('app.media.method3'))
  8.   }
  9. }
  10. .alignItems(HorizontalAlign.End)//末端对齐
  11. .width('100%')

效果如图:

图片

以上便是全部对Column和Row容器的补充内容

下面我们来一起学习新的组件内容:

在日常生活的软件中,大家应该经常能碰到像这样的页面:

图片

它通过一行行的表格使它的功能整齐排列在页面中,不仅使得页面美观,而且给用户带来了方便的使用体验,那么这样的表格是如何实现的?接下来将介绍一个生成表格的组件----List。

List

上面已经介绍到,List组件是用于生成表格的,它一般和它的子组件ListItem一起使用,按照水平或垂直方向线性排列,它的参数情况如下:

图片

如图所示,可以看到List组件一共有三个参数,分别是“space”“initalIndex”以及“scroller”,其中

space的作用是用于调整列表项之间的间距,

initalIndex是用于设置List初次加载时起始位置显示的item,

scroller的作用则是控制List组件的滚动。

而List组件的属性则主要有以下两种:

图片

在正式学习List组件之前,我们需要学会ForEach循环渲染,它将有利于我们更好的构建出大量格式相仿的表格项,大大减少我们的代码量。

ForEach循环渲染

首先,我们来看到它的基本格式,如图:

图片

不难发现它也是拥有3个参数。

  • 参数1:arr arr为需要迭代的数组,我们需要将数据提前存放在这个数组里,ForEach会将数据按顺序渲染进列表项里'

  • 参数2:itemGenerator itemGenerator是为子组件生成函数,主要是用于设定好列表样式以进行循环渲染。

  • 参数3:keyGenerator keyGenerator是用于为数组唯一键值生成函数。

学习完ForEach后,我们便可以开始学习使用List组件了,首先,我们先来看看构建一个列表的步骤,如下图:

图片

接下来,我将以此图为例,尝试做出一张列表

图片

我们先对列表的每一项进行分析,例如:

图片

在这个列表项里,我们可以看到,它是由最左侧的图标,接着的文本,还有最右侧的箭头图标三个部分组成的,获得这些信息后,我们首先得创建一个命名为itemData的类,用于存放一个列表项里的数据(定义列表数据对象):

  1. export default class itemData{
  2.   img?:Resouce;
  3.   title: Resouce;
  4.   others:Resouce;
  5. //初始化列表项数据构建对应数据
  6. constructor(img?:Resouce,title: Resouce,others:Resouce){
  7.     this.img = img;
  8.     this.title = title;
  9.     this.others = others;
  10.   }
  11. }

接着到第二步,创建列表数据数组,代码如下:

  1. export class MainViewModel{
  2. ...
  3. //创建函数getSettingListData用于接收数据
  4. getSettingListData():array<ItemData>{
  5. //创建数组settingListData用于存放接收到的数据
  6.   let settingListData:ItemData[] = [
  7.     new ItemData($r('app.media,news'),$r('app.string.setting_List_news'),$r('app.strinjg.setting.List.toggle')),
  8. new ItemData($r('app.media.data'),$r('app.string.setting_List_data'),null),
  9. new ItemData($r('app.media.menu'),$r('app.string.setting_List_menu'),null),
  10. ...
  11. ];
  12.   return settingListData;
  13.   }
  14. }
  15. export default new MainViewModel();

第三步,使用List组件构建列表。

  1. @Builder SettingCell(item:ItemData){
  2.   Row(){
  3.     Row({space:12}){
  4.       Image(item.img)
  5.       Test(item.title)     
  6.  }
  7.   if(itme.others == null){
  8.     Image($r('app.media.right_grey'))//向右箭头图标        
  9.   }else{
  10.      Toggle(Toggle({type:ToggleType.switch,isOn:false}))//启动按钮 
  11.   }
  12. }
  13. .justifyContent(FlexAlign.SpaceBetween)//第一个元素行首对齐,最后一个元素行尾对齐
  14. .width('100%')

第四步,使用ForEach构建列表:

  1. @Component
  2. export default struct Setting{
  3.   @Builder SettingCell(item:ItemData){...}
  4.   ...
  5.   List(){
  6.     ForEach(MainViewModel.getSettingListData(),//遍历数组数据
  7.        (item:ItemData) => {ListItem(){
  8.         this.settingCell(item)
  9.       }//生成子组件
  10.     },item => JSON.stringify(item))//生成数组项键值
  11.   }
  12.   .divider({...})//设置列表分割线
  13. ...
  14. }

经过上面的步骤,我们就能完成一个List列表的构建,完成一个

图片

这样的列表,以上便是本片博客的全部内容。

最后

如果你想快速提升鸿蒙技术,那么可以直接领取这份包含了:【OpenHarmony多媒体技术、Stage模型、ArkUI多端部署、分布式应用开发、音频、视频、WebGL、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。

鸿蒙Next全套VIP学习资料←点击领取!(安全链接,放心点击

1.鸿蒙核心技术学习路线

2.大厂面试必问面试题

3.鸿蒙南向开发技术

 4.鸿蒙APP开发必备

 5.HarmonyOS Next 最新全套视频教程

 6.鸿蒙生态应用开发白皮书V2.0PDF

这份全套完整版的学习资料已经全部打包好,朋友们如果需要可以点击鸿蒙Next全套VIP学习资料免费领取(安全链接,放心点击

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号