国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用

這篇具有很好參考價(jià)值的文章主要介紹了HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

List 創(chuàng)建列表 列表形式顯示

官方文檔:創(chuàng)建列表(List)

關(guān)鍵代碼

  • List(){} 列表控件
  • ListItem() {} 子元素

例如
HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用,鴻蒙HarmonOS,harmonyos,學(xué)習(xí),筆記

1、簡(jiǎn)單使用代碼 List(){}

List() {
  ListItem() {
    Row() {
      Image($r('app.media.iconE'))
        .width(40)
        .height(40)
        .margin(10)

      Text('小明')
        .fontSize(20)
    }
  }

  ListItem() {
    Row() {
      Image($r('app.media.iconF'))
        .width(40)
        .height(40)
        .margin(10)

      Text('小紅')
        .fontSize(20)
    }
  }
}

2、迭代列表內(nèi)容 ForEach

import util from '@ohos.util';

class Contact {
  key: string = util.generateRandomUUID(true);
  name: string;
  icon: Resource;

  constructor(name: string, icon: Resource) {
    this.name = name;
    this.icon = icon;
  }
}

@Entry
@Component
struct SimpleContacts {
  private contacts = [
    new Contact('小明', $r("app.media.iconA")),
    new Contact('小紅', $r("app.media.iconB")),
    ...
  ]

  build() {
    List() {
      ForEach(this.contacts, (item: Contact) => {
        ListItem() {
          Row() {
            Image(item.icon)
              .width(40)
              .height(40)
              .margin(10)
            Text(item.name).fontSize(20)
          }
          .width('100%')
          .justifyContent(FlexAlign.Start)
        }
      }, item => item.key)
    }
    .width('100%')
  }
}

3、列表方向 listDirection

關(guān)鍵代碼:listDirection(Axis.Horizontal)

  • 默認(rèn)豎直方向 Axis.Vertical
List() {
  ...
}
.listDirection(Axis.Horizontal) //列表水平方向

4、設(shè)置內(nèi)容間距 space

List({ space: 10 }) {
  ...
}

5、分隔符的設(shè)置 divider

List() {
  ...
}
.divider({
  strokeWidth: 1,
  startMargin: 60,
  endMargin: 10,
  color: '#ffe9f0f0'
})
    1. 分隔線的寬度會(huì)使ListItem之間存在一定間隔,當(dāng)List設(shè)置的內(nèi)容間距小于分隔線寬度時(shí),ListItem之間的間隔會(huì)使用分隔線的寬度。
    1. 當(dāng)List存在多列時(shí),分割線的startMargin和endMargin作用于每一列上。
    1. List組件的分隔線畫在兩個(gè)ListItem之間,第一個(gè)ListItem上方和最后一個(gè)ListItem下方不會(huì)繪制分隔線。

6、滾動(dòng)條的設(shè)置 scrollBar()

  • BarState.on 打開
  • BarState.Off 關(guān)閉
  • BarState.Auto 自動(dòng) (滾動(dòng)時(shí)顯示,2秒后隱藏)
List() {
  ...
}
.scrollBar(BarState.Auto)

7、支持分組列表 itemHead

HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用,鴻蒙HarmonOS,harmonyos,學(xué)習(xí),筆記

@Component
struct ContactsList {
  ...
  
  @Builder itemHead(text: string) {
    // 列表分組的頭部組件,對(duì)應(yīng)聯(lián)系人分組A、B等位置的組件
    Text(text)
      .fontSize(20)
      .backgroundColor('#fff1f3f5')
      .width('100%')
      .padding(5)
  }

  build() {
    List() {
      ListItemGroup({ header: this.itemHead('A') }) {
        // 循環(huán)渲染分組A的ListItem
        ...
      }
      ...

      ListItemGroup({ header: this.itemHead('B') }) {
        // 循環(huán)渲染分組B的ListItem
        ...
      }
      ...
    }
  }
}

8、添加粘性標(biāo)題 .sticky(StickyStyle.Header)

  • 如果需要支持吸底效果,可以通過(guò)footer參數(shù)初始化ListItemGroup的底部組件,并將sticky屬性設(shè)置為StickyStyle.Footer

HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用,鴻蒙HarmonOS,harmonyos,學(xué)習(xí),筆記

@Component
struct ContactsList {
  // 定義分組聯(lián)系人數(shù)據(jù)集合contactsGroups數(shù)組
  ...
 
  @Builder itemHead(text: string) {
    // 列表分組的頭部組件,對(duì)應(yīng)聯(lián)系人分組A、B等位置的組件
    Text(text)
      .fontSize(20)
      .backgroundColor('#fff1f3f5')
      .width('100%')
      .padding(5)
  }

  build() {
    List() {
      // 循環(huán)渲染ListItemGroup,contactsGroups為多個(gè)分組聯(lián)系人contacts和標(biāo)題title的數(shù)據(jù)集合
      ForEach(this.contactsGroups, item => {
        ListItemGroup({ header: this.itemHead(item.title) }) {
          // 循環(huán)渲染ListItem
          ForEach(item.contacts, (contact) => {
            ListItem() {
              ...
            }
          }, item => item.key)
        }
        ...
      })
    }
    .sticky(StickyStyle.Header)  // 設(shè)置吸頂,實(shí)現(xiàn)粘性標(biāo)題效果
  }
}

9、list快速返回列表頂部

1) 首先,需要?jiǎng)?chuàng)建一個(gè)Scroller的對(duì)象listScroller

private listScroller: Scroller = new Scroller();

2)然后,通過(guò)將listScroller用于初始化List組件的scroller參數(shù),完成listScroller與列表的綁定。在需要跳轉(zhuǎn)的位置指定scrollToIndex的參數(shù)為0,表示返回列表頂部。

Stack({ alignContent: Alignment.BottomEnd }) {
  // 將listScroller用于初始化List組件的scroller參數(shù),完成listScroller與列表的綁定。
  List({ space: 20, scroller: this.listScroller }) {
    ...
  }
  ...

  Button() {
    ...
  }
  .onClick(() => {
    // 點(diǎn)擊按鈕時(shí),指定跳轉(zhuǎn)位置,返回列表頂部
    this.listScroller.scrollToIndex(0)
  })
  ...
}

10、響應(yīng)滾動(dòng)位置 AlphabetIndexer

HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用,鴻蒙HarmonOS,harmonyos,學(xué)習(xí),筆記

...
const alphabets = ['#', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
  'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

@Entry
@Component
struct ContactsList {
  @State selectedIndex: number = 0;
  private listScroller: Scroller = new Scroller();
  ...

  build() {
    Stack({ alignContent: Alignment.End }) {
      List({ scroller: this.listScroller }) {
        ...
      }
      .onScrollIndex((firstIndex: number) => {
          this.selectedIndex = firstIndex
        // 根據(jù)列表滾動(dòng)到的索引值,重新計(jì)算對(duì)應(yīng)聯(lián)系人索引欄的位置this.selectedIndex
        ...
      })
      ...
      // 字母表索引組件
      AlphabetIndexer({ arrayValue: alphabets, selected: 0 })
        .selected(this.selectedIndex)
      ...
    }
  }
}

11、list 響應(yīng)列表項(xiàng)側(cè)滑

HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用,鴻蒙HarmonOS,harmonyos,學(xué)習(xí),筆記

@Entry
@Component
struct MessageList {
  @State messages: object[] = [
    // 初始化消息列表數(shù)據(jù)
    ...
  ];

  @Builder itemEnd(index: number) {
    // 側(cè)滑后尾端出現(xiàn)的組件
    Button({ type: ButtonType.Circle }) {
      Image($r('app.media.ic_public_delete_filled'))
        .width(20)
        .height(20)
    }
    .onClick(() => {
      this.messages.splice(index, 1);
    })
    ...
  }
  build() {
    ...
      List() {
        ForEach(this.messages, (item, index) => {
          ListItem() {
            ...
          }
          .swipeAction({ end: this.itemEnd.bind(this, index) }) // 設(shè)置側(cè)滑屬性
        }, item => item.id.toString())
      }
    ...
  }
}

12、list 懶加載 LazyForEach cachedCount

原因:
當(dāng)數(shù)據(jù)量多的時(shí)候,為了減少內(nèi)存,一般用懶加載緩存,顯示屏幕內(nèi)容,和渲染一定數(shù)量的緩存,當(dāng)滑動(dòng)的時(shí)候再加載沒(méi)有渲染的內(nèi)容,釋放緩存外的內(nèi)容,達(dá)到釋放緩存的目的

目的:

  • cachedCount的增加會(huì)增大UI的CPU、內(nèi)存開銷。使用時(shí)需要根據(jù)實(shí)際情況,綜合性能和用戶體驗(yàn)進(jìn)行調(diào)整。
  • 列表使用數(shù)據(jù)懶加載時(shí),除了顯示區(qū)域的列表項(xiàng)和前后緩存的列表項(xiàng),其他列表項(xiàng)會(huì)被銷毀。

關(guān)鍵代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-788039.html

  • LazyForEach
  • .cachedCount(3)
List() {
  LazyForEach(this.dataSource, item => {
    ListItem() {
      ...
    }
  })
}.cachedCount(3)	

到了這里,關(guān)于HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UI布局學(xué)習(xí) List(){}創(chuàng)建列表 列表形式顯示 簡(jiǎn)單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • UI開發(fā)布局-HarmonyOS應(yīng)用UI開發(fā)布局

    UI開發(fā)布局-HarmonyOS應(yīng)用UI開發(fā)布局

    UI頁(yè)面的構(gòu)建不用再像Android開發(fā)過(guò)程中在.xml文件中書寫,可直接在頁(yè)面上使用聲明式UI的方式按照布局進(jìn)行排列,構(gòu)建應(yīng)用的頁(yè)面。 如下代碼使用Row、Column構(gòu)建一個(gè)頁(yè)面布局,在頁(yè)面布局中添加組件Text、Button,共同構(gòu)成頁(yè)面: 在實(shí)際開發(fā)的過(guò)程中,按照如下流程進(jìn)行頁(yè)面的

    2024年04月13日
    瀏覽(22)
  • HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UIAbility組件與UI的數(shù)據(jù)同步 EventHub、globalThis

    HarmonyOS應(yīng)用開發(fā)學(xué)習(xí)筆記 UIAbility組件與UI的數(shù)據(jù)同步 EventHub、globalThis

    1、 HarmoryOS Ability頁(yè)面的生命周期 2、 @Component自定義組件 3、HarmonyOS 應(yīng)用開發(fā)學(xué)習(xí)筆記 ets組件生命周期 4、HarmonyOS 應(yīng)用開發(fā)學(xué)習(xí)筆記 ets組件樣式定義 @Styles裝飾器:定義組件重用樣式 @Extend裝飾器:定義擴(kuò)展組件樣式 5、HarmonyOS 應(yīng)用開發(fā)學(xué)習(xí)筆記 state狀態(tài)管理概述 6、HarmonyO

    2024年02月03日
    瀏覽(32)
  • HarmonyOS 應(yīng)用開發(fā)學(xué)習(xí)筆記 狀態(tài)管理概述

    HarmonyOS 應(yīng)用開發(fā)學(xué)習(xí)筆記 狀態(tài)管理概述

    移動(dòng)端開發(fā),最重要的一點(diǎn)就是數(shù)據(jù)的處理,并且正確的顯示渲染UI。 變量在頁(yè)面和組件、組件和組件之間有時(shí)候并不能實(shí)時(shí)共享,而有時(shí)候,又不需要太多的作用域(節(jié)省資源),作用就需要根據(jù)不同場(chǎng)景,設(shè)置不同狀態(tài)的變量。 官方文檔 在聲明式UI編程框架中,UI是程序

    2024年02月03日
    瀏覽(21)
  • 鴻蒙HarmonyOS4.0開發(fā)應(yīng)用學(xué)習(xí)筆記

    鴻蒙HarmonyOS4.0開發(fā)應(yīng)用學(xué)習(xí)筆記

    鴻蒙harmony開發(fā)文檔指南 DevEco Studio下載地址 選擇或者安裝環(huán)境 選擇和下載SDK 安裝總覽 編輯器界面 2.1變量聲明 2.2條件控制 2.3循環(huán)迭代 2.4函數(shù) 2.5類和接口 2.6模塊開發(fā) 通用功能抽取到單獨(dú)的ts文件,每個(gè)文件都是一個(gè)模塊(module)。 模塊可以相互加載,提高代碼復(fù)用性。 crea

    2024年02月04日
    瀏覽(31)
  • HarmonyOS應(yīng)用開發(fā)者高級(jí)認(rèn)證學(xué)習(xí)認(rèn)證知識(shí)答疑筆記

    1. 判斷題 1. 云函數(shù)打包完成后,需要到APPGallery Connect創(chuàng)建對(duì)應(yīng)函數(shù)的觸發(fā)器才可以在端側(cè)中調(diào)用 錯(cuò) 2. 每一個(gè)自定義組件都有自己的生命周期 對(duì) 3. 基于端云一體化開發(fā),開發(fā)者需要精通前端,后端不同的開發(fā)語(yǔ)言。 錯(cuò) 4. 首選項(xiàng)preferences是以key-value形式存儲(chǔ)數(shù)據(jù),其中key是可

    2024年02月04日
    瀏覽(19)
  • HarmonyOS鴻蒙開發(fā)指南:基于ArkTS開發(fā) 輕量級(jí)智能穿戴 體驗(yàn)應(yīng)用、構(gòu)建布局、繪制樣式???????和交互事件

    HarmonyOS鴻蒙開發(fā)指南:基于ArkTS開發(fā) 輕量級(jí)智能穿戴 體驗(yàn)應(yīng)用、構(gòu)建布局、繪制樣式???????和交互事件

    目錄 體驗(yàn)應(yīng)用 構(gòu)建布局 繪制樣式??????? 交互事件 HelloWorld工程目錄如下圖所示: 圖1? 目錄結(jié)構(gòu) pages/index/index.hml

    2024年02月01日
    瀏覽(27)
  • HarmonyOS/OpenHarmony應(yīng)用開發(fā)-ArkTS語(yǔ)言聲明式UI描述

    ArkTS以聲明方式組合和擴(kuò)展組件來(lái)描述應(yīng)用程序的UI,同時(shí)還提供了基本的屬性、事件和子組件配置方法,幫助開發(fā)者實(shí)現(xiàn)應(yīng)用交互邏輯。 一、創(chuàng)建組件 根據(jù)組件構(gòu)造方法的不同,創(chuàng)建組件包含有參數(shù)和無(wú)參數(shù)兩種方式。 說(shuō)明,創(chuàng)建組件時(shí)不需要new運(yùn)算符。 1.無(wú)參數(shù) 如果組

    2024年02月08日
    瀏覽(21)
  • HarmonyOS應(yīng)用開發(fā)者基礎(chǔ)筆記

    HarmonyOS應(yīng)用開發(fā)者基礎(chǔ)筆記

    HOS認(rèn)證基礎(chǔ)筆記 HarmonyOS應(yīng)用開發(fā)者高級(jí)認(rèn)證筆記 華子鴻蒙開發(fā)認(rèn)證(認(rèn)證鏈接),粗略看了看感覺還行,遂1h22min速通 首選項(xiàng)preferences是以Key-Value形式存儲(chǔ)數(shù)據(jù),其中Key是可以重復(fù)。(錯(cuò)) 使用http模塊發(fā)起網(wǎng)絡(luò)請(qǐng)求時(shí),必須要使用on(‘headersReceive’)訂閱請(qǐng)求頭,請(qǐng)求才會(huì)成

    2024年02月02日
    瀏覽(26)
  • 《HarmonyOS開發(fā) – OpenHarmony開發(fā)筆記(基于小型系統(tǒng))》第4章 OpenHarmony應(yīng)用開發(fā)實(shí)例

    《HarmonyOS開發(fā) – OpenHarmony開發(fā)筆記(基于小型系統(tǒng))》第4章 OpenHarmony應(yīng)用開發(fā)實(shí)例

    開發(fā)環(huán)境 : 開發(fā)系統(tǒng):Ubuntu 20.04 開發(fā)板:Pegasus物聯(lián)網(wǎng)開發(fā)板 MCU:Hi3861 OpenHarmony版本:3.0.1-LTS 1.新建工程及源碼 新建目錄 在applications/sample/myapp中新建src目錄以及myapp.c文件,代碼如下所示。 新建編譯組織文件 新建applications/sample/myapp/BUILD.gn文件,內(nèi)容如下所示: static_libr

    2024年02月09日
    瀏覽(37)
  • 鴻蒙應(yīng)用開發(fā)學(xué)習(xí)路線(OpenHarmony/HarmonyOS)

    鴻蒙應(yīng)用開發(fā)學(xué)習(xí)路線(OpenHarmony/HarmonyOS)

    作者:堅(jiān)果 團(tuán)隊(duì):堅(jiān)果派 公眾號(hào):“大前端之旅” 潤(rùn)開鴻技術(shù)專家,華為HDE,InfoQ簽約作者,OpenHarmony布道師,擅長(zhǎng)HarmonyOS應(yīng)用開發(fā)、熟悉服務(wù)卡片開發(fā),在“戰(zhàn)碼先鋒”活動(dòng)中作為大隊(duì)長(zhǎng),累計(jì)培養(yǎng)三個(gè)小隊(duì)長(zhǎng),帶領(lǐng)100+隊(duì)員完成Pr的提交合入。 歡迎通過(guò)主頁(yè)或者私信聯(lián)系

    2024年02月15日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包