张裕 发表于 2024-9-28 00:09:40

零基础快速上手HarmonyOS ArkTS开发5---从简单的页面开始2---使用List组件

接着继承往放学习页面布局的知识。最近发现之前学习这一章节的内容在官方已经被下了,替换成了另外一个案例了( https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101717497398588123):
   https://img-blog.csdnimg.cn/img_convert/411639554b56023964e7456ad359517d.png
   而且整个视频的风格也不一样了,先看看之前的这个美女讲师:
   https://img-blog.csdnimg.cn/img_convert/6abb3cd1fb3e0c0a647ca92aa3b55e24.png
   再看看如今的:
   https://img-blog.csdnimg.cn/img_convert/c4f1dd293aa445d7a4cfcc0627a4ab84.png
   哇塞,档次一看就不一样了,新的肯定是佳构,但是我这章学习才刚开始绘了个静态的登录界面呀,就想让我直接放弃治疗了~~只能说我学得如蜗牛般快,跟不上官方的步调。
   还幸亏B站上搜到了当时整个系列的课程: https://space.bilibili.com/1785849877/channel/seriesdetail?sid=3844174
   这也挺好,等我把旧的学完,再以最新的这个案例再举行巩固加深~~
   在上一次搭建好登录的界面之后,这次则在登录界面成功之后,再来构建一下我的设置界面:
   https://img-blog.csdnimg.cn/img_convert/270713d3e15411c1de71eff6f1134695.png
   其焦点是学习List组件的使用。
   List组件先容:

   List组件一样平常和子组件ListItem一起使用,按照垂直或水平方向线性排列。
   接口:

   List(value?:{space?: number | string, initialIndex?: number, scroller?: Scroller})
   入参1:space设置列表间距;
   入参2: initialIndex设置当前List初次加载时起始位置表现的item;
   入参3:scroller控制器,可以控制组件的滚动;
   属性:

   https://img-blog.csdnimg.cn/img_convert/381cb457776eeffa56492e1213a3e6c4.png
   关于这块的更多属性可以参考官方api文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-list-V5
   循环渲染(ForEach)先容:

   由于列表是有多个列表项,以是构建列表需要使用ForEach举行循环渲染,先看一下它的界说:
   https://img-blog.csdnimg.cn/img_convert/d45a3448b6a404b3e8556501c8305ece.png
   参数1:arr为需要迭代的数组;
   参数2:itemGenerator为子组件天生函数;
   参数3: keyGenerator为数组项唯一键值天生函数,它是一个可选项参数,但是为了使开发框架可以或许更好地辨认数组更改,提高性能,发起提供该参数。
   使用List组件构建列表:

   接下来看一下List组件详细的构建步调。
   1、界说列表数据对象:用于封装列表项数据

   https://img-blog.csdnimg.cn/img_convert/e8ae8d3bbd3a4decd7926e90d6b5658d.png
   它由三个元素组件:一个图标,一个标题,一个菜单的状态(单选开关,照旧向右的可点击的),以是可以界说如下对象:
   https://img-blog.csdnimg.cn/img_convert/e8f200fa2c1ab2aba3b682af5c94f82a.png
   2、创建列表数据数组:为列表创建数据源

   https://img-blog.csdnimg.cn/img_convert/2e363125ec79e70dcd9d3b95d5487363.png
   3、创建列表Item内容:构建列表项组件

   接下来则需要来构建Item组件了,此时就需要使用到@Builder装饰器了(关于它可以参考上一篇),
   https://img-blog.csdnimg.cn/img_convert/9ad61e8bd1c92e85078295786778587f.png
   这块的代码比较好理解,就不过多说明。
   4、使用ForEach构建列表: 遍历数据源渲染列表项

   最后就是来完成整个列表的渲染了,如下:
   https://img-blog.csdnimg.cn/img_convert/626e91b6f5e205d30f868873aff744e3.png
   5、List实践:

   理论基础学完了之后,接下来则回到代码中来实现这么一个列表界面。
   1、登录按钮增长点击事件:

   在上一次搭建了一个登录的静态界面,这里先给登录按钮添加一个点击事件,登录之后再跳到既将要搭建的列表界面:
   https://img-blog.csdnimg.cn/img_convert/ade8fc184d26a37805e80b68f9c7feee.png
   https://img-blog.csdnimg.cn/img_convert/42da2585b769a13aa53ce0a41fba92f6.png
   起首需要判断用户名和暗码是否输入了,假如用户没输入则给个非常提示,这里则需要界说两个装饰变量:
   https://img-blog.csdnimg.cn/img_convert/ae6b69100ec7c4d99f7c2d8e068f48ff.png
   而关于这个装饰器的作用可以参考,然后在文本输入框中需要添加文本的监听,如下:
   https://img-blog.csdnimg.cn/img_convert/53eacd10c68f96690721b8a1b82d98df.png
   此时就可以举行登录参数简单校验了: 
   https://img-blog.csdnimg.cn/img_convert/dd1c6066e744940f25ae6df392ffd527.png
   此时运行看一下:
   https://img-blog.csdnimg.cn/img_convert/cc9e602420afdfbe332b46c2a910be2a.gif
   这里的登录就用延时来模拟一下了,由于登录是一个需要耗时的操纵,所有应该展示一个loading给用户举行等待,以是先界说一个loading的状态变量:
   https://img-blog.csdnimg.cn/img_convert/e4765636c3fe8afd18f30bc3409e60ab.png
   https://img-blog.csdnimg.cn/img_convert/158319ec2c9a71db25425c0d6fe651a7.png
   此时运行看一下:
   https://img-blog.csdnimg.cn/img_convert/6015c6cc490d35dd12c35cba206930fe.gif
   接下来则新建一个首页用来举行登录跳转:
   https://img-blog.csdnimg.cn/img_convert/be456ef797c7869fe61f8c71d90c9c86.png
   此时要注意了,需要在这里注册一下:
   https://img-blog.csdnimg.cn/img_convert/6f47b85b5688a708af9949fef154d437.png
   此时就可以举行路由跳转了:
   https://img-blog.csdnimg.cn/img_convert/ff6e7615ed9a0ef62446d749f846556a.png
   其中router需要导入包:
   https://img-blog.csdnimg.cn/img_convert/916cf92aa79bd54e2aac8d725825b7da.png
   此时运行看一下结果:
   https://img-blog.csdnimg.cn/img_convert/ad30e5268f0bab20302410ee7f477a83.gif
   2、搭建我的列表界面:

   1、标题处置惩罚:

   https://img-blog.csdnimg.cn/img_convert/480fe562728ff83ea0fc8830789b8e18.png
   起首用一个Scroll包裹一下,因为设置项通常的内容会超过一屏,以是需要让用户可以上下滑动:
   https://img-blog.csdnimg.cn/img_convert/0d0bc5a7b2c4c89da9329de2cff76ed9.png
   然后团体是垂直排列的,以是用Column包裹一下:
   https://img-blog.csdnimg.cn/img_convert/18172bea0f67532cb3727270a40eeea3.png
   然后弄一个标题文本控件:
   https://img-blog.csdnimg.cn/img_convert/40faf337f604a5941dcb9b07f8dffb3c.png
   此时运行看一下:
   https://img-blog.csdnimg.cn/img_convert/c185b6ece163c4471b16f685deae974a.png
   另外设置一下页面背景和左右间距:
   https://img-blog.csdnimg.cn/img_convert/e93c4987ba22ff8c56dc0612f7bca018.png
   此时运行,发现标题居中表现了:
   https://img-blog.csdnimg.cn/img_convert/36d27d895477f0c8969ec3b1711bb499.png
   此时需要在Text元素外面再包裹一层:
   https://img-blog.csdnimg.cn/img_convert/6b9f53bc1311b46236834c0e6503bf72.png
   再运行:
   https://img-blog.csdnimg.cn/img_convert/6e487f15702eae702e3dc5d2a24133f4.png
   2、用户明细地区:

   https://img-blog.csdnimg.cn/img_convert/aafc690c2b51ec91b138c66ef89af54a.png
                                 登录后复制                         /* 用户明细区域 */
      Row() {
          Image($r('app.media.account'))
            .width($r('app.float.setting_account_size'))
            .height($r('app.float.setting_account_size'))
          Column() {
            Text($r('app.string.setting_account_name'))
            .fontSize($r('app.float.setting_account_fontSize'))
            Text($r('app.string.setting_account_email'))
            .fontSize($r('app.float.little_text_size'))
            .margin({ top: $r('app.float.setting_name_margin') })
          }
          .alignItems(HorizontalAlign.Start)
          .margin({ left: $r('app.float.setting_account_margin') })
      }
      .margin({ top: $r('app.float.setting_account_margin') })
      .alignItems(VerticalAlign.Center)
      .width(CommonConstants.FULL_PARENT)
      .height($r('app.float.setting_account_height'))
      .backgroundColor(Color.White)
      .padding({ left: $r('app.float.setting_account_padding') })      

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
[*]19.
[*]20.
[*]21.
                     此时运行看一下:
   https://img-blog.csdnimg.cn/img_convert/d4ae1a32b0fc4b1dfff6fb1d7975e043.png
   再设置一下地区的圆角:
   https://img-blog.csdnimg.cn/img_convert/57b4f716a3e736789b44314f81a2f50e.png
   https://img-blog.csdnimg.cn/img_convert/2ece9ed8129adab5b65ad82d8f57fcd8.png
   3、准备列表数据:

   接下来则需要来搭建开关列表了,这里先来准备好列表的数据,这里先新建一个viewmodel文件夹:
   https://img-blog.csdnimg.cn/img_convert/c792c9538765241249a6d015cfb1b45d.png
   然后新建一个列表类:
   https://img-blog.csdnimg.cn/img_convert/5760d43593fbe0cedcc6251108ec2289.png
                                 登录后复制                         /**
* List item data entity.
*/
export default class PageResource {
/**
   * Text of list item.
   */
title: Resource;
/**
   * Image of list item.
   */
img: Resource;
/**
   * Other resource of list item.
   */
others?: Resource;

constructor(title: Resource, img: Resource, others?: Resource) {
    this.title = title;
    this.img = img;
    this.others = others;
}
}      

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
[*]19.
[*]20.
[*]21.
[*]22.
[*]23.
                     然后就可以准备列表数据了,如下:
   https://img-blog.csdnimg.cn/img_convert/ee17248c8929e29f036c995d9fabdfa3.png
                                 登录后复制                         import ItemData from './ItemData';

/**
* Binds data to components and provides interfaces.
*/
export class MainViewModel {

/**
   * Get data of the setting list.
   *
   * @return {Array<PageResource>} settingListData.
   */
getSettingListData(): Array<ItemData> {
    let settingListData: ItemData[] = [
      new ItemData($r('app.string.setting_list_news'), $r('app.media.news'), $r("app.string.setting_toggle")),
      new ItemData($r('app.string.setting_list_data'), $r('app.media.data')),
      new ItemData($r('app.string.setting_list_menu'), $r('app.media.menu')),
      new ItemData($r('app.string.setting_list_about'), $r('app.media.about')),
      new ItemData($r('app.string.setting_list_storage'), $r('app.media.storage')),
      new ItemData($r('app.string.setting_list_privacy'), $r('app.media.privacy'))
    ];
    return settingListData;
}
}

export default new MainViewModel();      

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
[*]19.
[*]20.
[*]21.
[*]22.
[*]23.
[*]24.
[*]25.
[*]26.
                     4、选项开关地区:

   此时咱们就可以这次新学的List组件来搭建列表界面了,如下:
   https://img-blog.csdnimg.cn/img_convert/ba2c2f47ec978e694fea2524fc1ef5f5.png
   运行看一下:
   https://img-blog.csdnimg.cn/img_convert/7dd4effb3792fb01e552b2da688a8741.png
   发现这块没有间距:
   https://img-blog.csdnimg.cn/img_convert/7a648c4c0564f499102ef6907b87edc8.png
   这里可以加一个间距,如下:
   https://img-blog.csdnimg.cn/img_convert/f28117a0237edfe0842c52cb82c07cf3.png
   https://img-blog.csdnimg.cn/img_convert/24f5a4f27e39f96f1eefaf266a9953c0.png
   接下来再来对列表项举行一个渲染:
   https://img-blog.csdnimg.cn/img_convert/664fc61466bc1aff9196f20fb658732b.png
   此时运行:
   https://img-blog.csdnimg.cn/img_convert/da7939e68e2ffcadf229da84dd0ef33c.png
   这个开关应该是居右的,这里又需要使用到flex布局了,如下:
   https://img-blog.csdnimg.cn/img_convert/ff94172f01dbb7a700828c81e8d4ebce.png
   这里需要用到上节所学的知识了,主轴方向上的对齐则需要使用justifyContent:
   https://img-blog.csdnimg.cn/img_convert/22e305b3e2436154f99f0631416f6c4f.png
   此时再运行:
   https://img-blog.csdnimg.cn/img_convert/2d3fd2faef02057dfa6903efaa392c0b.png
   最后,对于这个列表的渲染可以使用@Builder装饰器举行一下组件的封装,如下:
   https://img-blog.csdnimg.cn/img_convert/192200b3f9ad40b5cac4996bb32ad3fc.png
   https://img-blog.csdnimg.cn/img_convert/0287786d55d00f92a97f5a27a4c045fb.png
   4、退出登录:

   最后再弄一个退出登录的按钮:
   https://img-blog.csdnimg.cn/img_convert/204252e6094dc3cbeae75b120350a684.png
   此时运行一下:
   https://img-blog.csdnimg.cn/img_convert/1abe200980d5c88a06b937f6275a7972.png
   应该它的位置是在底部,那怎么调解一下呢?此时Blank()的本领就可以派上用场了:
   https://img-blog.csdnimg.cn/img_convert/33dedc109e6a0946b7b6c54ba80b62c8.png
   这块在上一节中也使用到了:
   https://img-blog.csdnimg.cn/img_convert/5373e533a5cc0e756edd9da783add2e8.png
   此时再运行就如预期了:
   https://img-blog.csdnimg.cn/img_convert/e8f9c31bcdb9f64df1947fda0c72b3bf.png
   Grid组件先容:

   对于这个页面,它就是由Grid组件来实现的:
   https://img-blog.csdnimg.cn/img_convert/e56fd0bef110ac0b696d0ef25c59b01a.png
   它是一种网格容器,由“行”和“列”所分割的单元格构成,我们通过指定差异“项目”所在的单元格就可以做出各种各样的布局。
   界说:

   https://img-blog.csdnimg.cn/img_convert/7fd19e75ae19fbaf793437da025933b2.png
   其中它跟List组件雷同,需要搭配着子组件GridItem来使用,其实现在最新的参数有2个了:
   https://img-blog.csdnimg.cn/img_convert/f7fa2ea4fcacd6e0f6d6897a17458f8a.png
   这块未来用到再说,现在先团体把官方的教程给学完。
   属性:

   重要属性如下:
   https://img-blog.csdnimg.cn/img_convert/f8da13edd77e63e35583c31ee792875c.png
   下面详细来学习一下。
   columnsTemplate:

   当我们不设置时,默认是1列,它使用的单位是fr,fr是划分网格的,例如'1fr 1fr 2fr'是将父组件分3行,将父组件答应的高分为4等份,第一行占1份,第二行占一份,第三行占2份,如下:
   https://img-blog.csdnimg.cn/img_convert/d7226ae6079475f28d07658fb14e5edb.png
   rowsTemplate:

   这个也很好理解,假如设置成“1fr 2fr 1fr”时,其样式就是如许:
   https://img-blog.csdnimg.cn/img_convert/e40e03284b657ab954053a813cd84312.png
   columnsGap:

   它是用来设置列的间距,如橘黄色所示:
   https://img-blog.csdnimg.cn/img_convert/e74d46ff30bf744c22665f66fcc66240.png
   rowsGap:

   它则是用来设置行的间距:
   https://img-blog.csdnimg.cn/img_convert/f042e8d657f5df5ec1375dcb95c6729a.png
   使用Grid组件构建网格:

   相识了Grid组件的基本使用之后,下面来看这么一个界面如何使用它来举行构建:
   https://img-blog.csdnimg.cn/img_convert/af9e69975e3bad370883a1be44222afe.png
   界说数据对象:

   网格布局中的每一项内容是由两部分构成:
   https://img-blog.csdnimg.cn/img_convert/62d7aa36bc7937597b2055dc824c769a.png
   以是可以界说如下:
   https://img-blog.csdnimg.cn/img_convert/cddc50c4872d62a870fc41e676159bc9.png
   创建网格数据数组:

   接下来再来初始化网格数据数组:
   https://img-blog.csdnimg.cn/img_convert/26f236632571e5296a6ac6218aac0a54.png
   构建列表:

   其构建细节跟之前的List组件雷同,如下: 
   https://img-blog.csdnimg.cn/img_convert/6cd294e1014afd979013e794a73013be.png
   好比好理解。
   构建可滚动的网格:

   在上面实现的网格内容是不能滚动的,那有时是需要固定高宽,其多余的内容需要可以或许滚动展示,以是下面来看一下如何来实现,这里照旧以这个网格结果为例让其支持上下滑动。
   1、将rowsTemplate给去掉,因为要上下可滑动则不需要设置它了:

   https://img-blog.csdnimg.cn/img_convert/55fc0adfa22ff4b3075673973a8dca4e.png
   也就是:
   https://img-blog.csdnimg.cn/img_convert/a5053e52116350fc456bbfe5ea47f1f8.png
   2、在源数据中再增长两个测试数据,此时展示的样式就如下:

   https://img-blog.csdnimg.cn/img_convert/f1c2d3ba35159cc5c27f3589762e051e.png
   其中新加的两个测试数据会填充到地区外,此时就可以通过上下滑动举行展示了。
   Grid实践:

   接下来则继承基于项目的代码来练一练Grid,来实现首页的这么一个结果:
   https://img-blog.csdnimg.cn/img_convert/28a5ecc4874cc007abcf9656a6ba02eb.png
   1、备份MainPage.ets文件:

   由于现在咱们还没有学习Tabs如许的控件(将在下一篇来学习),以是这里将MainPage.ets实现的我的页面的文件给备份一下:
   https://img-blog.csdnimg.cn/img_convert/5733fac399917f301583ce3e5c514d27.png
   将此次操练的内容照旧写在MainPage.ets当中,等下次学习了Tabs控件之后,再将“我的”和“首页”两页面的内容串联起来,实现跟官方一样的结果,一步步来。
   2、准备标题:

   https://img-blog.csdnimg.cn/img_convert/923c7197a1e97a6d075d087645f966a6.png
   https://img-blog.csdnimg.cn/img_convert/5afb0826ad05daf84664b929c7f73ed7.png
   3、准备Swiper广告轮播的数据:

   起首实现的是顶部的广告轮播:
   https://img-blog.csdnimg.cn/img_convert/baad3916bd916959f30efa78b9b5da5d.png
   先来准备一下广告的数据:
   https://img-blog.csdnimg.cn/img_convert/c65596015891c6859ab0be03f121ad5e.png
                                 登录后复制                         /**
   * Get swiper image data.
   *
   * @return {Array<Resource>} swiperImages.
   */
getSwiperImages(): Array<Resource> {
    let swiperImages: Resource[] = [
    $r('app.media.fig1'),
    $r('app.media.fig2'),
    $r('app.media.fig3'),
    $r('app.media.fig4')
    ];
    return swiperImages;
}      

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
                     4、表现广告轮播:

   https://img-blog.csdnimg.cn/img_convert/a93a314441f941722fd15254d28bdfef.png
   运行一下:
   https://img-blog.csdnimg.cn/img_convert/9ca4eb93fdcd2959bdca7515b950cf8c.gif
   布局有点标题,高度撑满整个屏幕高度了。。这里其实是这个属性造成的:
   https://img-blog.csdnimg.cn/img_convert/bdd8652bea7ea5dcf655ab011c7b4595.png
   将其去掉一下:
   https://img-blog.csdnimg.cn/img_convert/7c434ee73c4d7215752f6cbf9e03346e.png
   https://img-blog.csdnimg.cn/img_convert/6e844177a52fa0737a185d4be0b1895b.png
   高度是可以了,但是居中了,我想要让它顶部对齐调了半天木调好,最后这么调解了一下:
   https://img-blog.csdnimg.cn/img_convert/4efe28774cc4177c583b4417fed5ea0f.png
   再运行:
   https://img-blog.csdnimg.cn/img_convert/1a6e1e4cba1b3922c505f32421da0b56.png
   5、表现Grid分类:

   接下来来搭建这块的地区:
   https://img-blog.csdnimg.cn/img_convert/4526b1c7417e41557f9330171ec0eeec.png
   1、准备分类数据:

   先来准备分类的数据:
   https://img-blog.csdnimg.cn/img_convert/8655b1c71911a4342cfa8d3eb14be518.png
                                 登录后复制                         /**
   * Get data of the first grid.
   *
   * @return {Array<PageResource>} firstGridData.
   */
getFirstGridData(): Array<ItemData> {
    let firstGridData: ItemData[] = [
      new ItemData($r('app.string.my_love'), $r('app.media.love')),
      new ItemData($r('app.string.history_record'), $r('app.media.record')),
      new ItemData($r('app.string.message'), $r('app.media.message')),
      new ItemData($r('app.string.shopping_cart'), $r('app.media.shopping')),
      new ItemData($r('app.string.my_goal'), $r('app.media.target')),
      new ItemData($r('app.string.group'), $r('app.media.circle')),
      new ItemData($r('app.string.favorites'), $r('app.media.favorite')),
      new ItemData($r('app.string.recycle_bin'), $r('app.media.recycle'))
    ];
    return firstGridData;
}      

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
                     2、定制布局:

   https://img-blog.csdnimg.cn/img_convert/ecf6196a7384161574d6dabcb45219a9.png
   其中对于Grid这个组件有一些关键属性,可以参考上面,这里也贴一下:
   https://img-blog.csdnimg.cn/img_convert/16e2c642bb388f75e15b640d4d784d92.png
   此时运行看一下:
   https://img-blog.csdnimg.cn/img_convert/a43450f5cb6cd27ff19a184d0a69ea89.png
   木有圆角结果呀,这需要加一个背景就可以了:
   https://img-blog.csdnimg.cn/img_convert/4b7041bfee9f8a9c6b0a10518901dc85.png
   6、列表表现:

   1、先准备列表数据:

   https://img-blog.csdnimg.cn/img_convert/236a50d65309b79c4db3d3855fdecdce.png
   2、准备标题:

   https://img-blog.csdnimg.cn/img_convert/1555960d12a9506e06e13fcc1b330bfc.png
   运行看一下:
   https://img-blog.csdnimg.cn/img_convert/3e6005a4caf0e2f9b768fa68c431bcdd.png
   左边少了间距,这块在之前会统一举行padding的设置的。
   3、列表表现:

   接下来处置惩罚列表的表现,照旧使用Grid组件,如下:
   https://img-blog.csdnimg.cn/img_convert/ae3ba58bbdcc8b1cfe3b002a470070eb.png
                                 登录后复制                         Grid() {
          ForEach(mainViewModel.getSecondGridData(), (secondItem: ItemData) => {
            GridItem() {
            Column() {
                Text(secondItem.title)
                  .fontSize($r('app.float.normal_text_size'))
                  .fontWeight(FontWeight.Medium)
                Text(secondItem.others)
                  .margin({ top: $r('app.float.home_list_margin') })
                  .fontSize($r('app.float.little_text_size'))
                  .fontColor($r('app.color.home_grid_fontColor'))
            }
            .alignItems(HorizontalAlign.Start)
            }
            .padding({ top: $r('app.float.home_list_padding'), left: $r('app.float.home_list_padding') })
            .borderRadius($r('app.float.home_backgroundImage_borderRadius'))
            .align(Alignment.TopStart)
            .backgroundImage(secondItem.img)
            .backgroundImageSize(ImageSize.Cover)
            .width(CommonConstants.FULL_PARENT)
            .height(CommonConstants.FULL_PARENT)
          }, (secondItem: ItemData) => JSON.stringify(secondItem))
      }
      .width(CommonConstants.FULL_PARENT)
      .height($r('app.float.home_secondGrid_height'))
      .columnsTemplate('1fr 1fr')
      .rowsTemplate('1fr 1fr')
      .columnsGap($r('app.float.home_grid_columnsGap'))
      .rowsGap($r('app.float.home_grid_rowGap'))
      .margin({ bottom: $r('app.float.setting_button_bottom') })      

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
[*]19.
[*]20.
[*]21.
[*]22.
[*]23.
[*]24.
[*]25.
[*]26.
[*]27.
[*]28.
[*]29.
[*]30.
                     运行看一下:
   https://img-blog.csdnimg.cn/img_convert/5be1bc035b7e8772f15fad64d716445d.png
   其中可以看到,团体的左右边距都没有设置不好看,以是这里统一设置一下:
   https://img-blog.csdnimg.cn/img_convert/2bc12b5502f4f39dca4170853fbdd689.png
   再次运行:
   https://img-blog.csdnimg.cn/img_convert/dc054e3572b1d8720af7e7dd775184b9.png
   总结:

   这次重要是学习了学用的List和Grid组件的使用,比较简单,这块的纯熟就是通过大量的练习,没有其它本领。在下次,则会使用Tabs组件,将之前所学的两个首页和我的页面举行一个串联,来实现官方的DEMO一模一样的结果,加油~~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 零基础快速上手HarmonyOS ArkTS开发5---从简单的页面开始2---使用List组件