0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)實(shí)例:【demo-搜索歷史記錄】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-26 22:40 ? 次閱讀

圖片演示效果:

cke_1568.png

鴻蒙OS開發(fā)更多內(nèi)容↓點(diǎn)擊HarmonyOSOpenHarmony技術(shù)
鴻蒙技術(shù)文檔開發(fā)知識(shí)更新庫gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在這。或+mau123789學(xué)習(xí),是v喔

代碼演示:

// 注:當(dāng)前代碼基于寬度為720的設(shè)計(jì)稿進(jìn)行適配,使用lpx單位。
// 整段代碼描述的功能:
// 該代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的搜索功能組件,其中包括:
// 1. 輸入框:用戶可以在此輸入要搜索的內(nèi)容;
// 2. 搜索按鈕:點(diǎn)擊后,將當(dāng)前輸入內(nèi)容添加到搜索歷史記錄的首位,若有重復(fù)則移除重復(fù)項(xiàng),并保持歷史記錄不超過10條;
// 3. 搜索歷史標(biāo)題和清空記錄按鈕:展示搜索歷史記錄列表,并提供清空全部歷史記錄的功能;
// 4. 搜索歷史記錄列表:按照時(shí)間最近的順序顯示搜索歷史記錄,最多顯示10條。
@Entry
@Component
struct test {
  // 定義狀態(tài)變量,用于存儲(chǔ)輸入框的當(dāng)前值
  @State inputValue: string = ''

  // 定義狀態(tài)變量,用于存儲(chǔ)搜索歷史記錄的數(shù)組
  @State historyValueArr: Array< string > = [
    '張三', '李四', '舉頭望明月', '低頭思故鄉(xiāng)', 'HarmonyOs', '不可能,絕對(duì)不可能'
  ]

  // 構(gòu)建UI組件
  build() {
    // 主體內(nèi)容使用Column布局,垂直堆疊組件
    Column() {
      // 輸入框和搜索按鈕組合,使用Row布局,水平排列
      Row() {
        // 創(chuàng)建一個(gè)TextInput輸入框
        TextInput({
          placeholder: '請(qǐng)輸入內(nèi)容',
          text: this.inputValue
        })
          .width('524.31lpx') // 設(shè)置寬度
          .height('70lpx') // 設(shè)置高度
          .fontSize('27lpx') // 設(shè)置字體大小
          .backgroundColor("#ffffff") // 設(shè)置背景顏色
            // 輸入框內(nèi)容改變時(shí),同步更新狀態(tài)變量inputValue
          .onChange((value) = > {
            this.inputValue = value
          })

        // 創(chuàng)建一個(gè)搜索按鈕
        Button('搜索')
          // 按鈕點(diǎn)擊事件,處理搜索邏輯
          .onClick(() = > {
            // 遍歷歷史記錄數(shù)組,若找到與輸入框內(nèi)容相同的記錄,從數(shù)組中移除
            for (let i = 0; i < this.historyValueArr.length; i++) {
              if (this.historyValueArr[i] === this.inputValue) {
                this.historyValueArr.splice(i, 1);
                break;
              }
            }

            // 將輸入框內(nèi)容添加到歷史記錄數(shù)組的首位
            this.historyValueArr.unshift(this.inputValue);

            // 若歷史記錄超過10條,則移除最后一項(xiàng)
            if (this.historyValueArr.length > 10) {
              this.historyValueArr.splice(this.historyValueArr.length - 1);
            }
          })
      }
      // 設(shè)置Row組件的寬度、對(duì)齊方式和內(nèi)外邊距
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      .padding({
        left: '37lpx',
        top: '11lpx',
        bottom: '11lpx',
        right: '15lpx'
      })

      // 搜索歷史標(biāo)題和清除記錄按鈕組合,同樣使用Row布局
      Row() {
        // 搜索歷史標(biāo)題
        Text('搜索歷史').fontSize('31lpx').fontColor("#000000")

        // 清空記錄按鈕
        Text('清空記錄')
          .fontSize('27lpx').fontColor("#828385")
          // 清空記錄按鈕點(diǎn)擊事件,清空歷史記錄數(shù)組
          .onClick(() = > {
            this.historyValueArr.length = 0;
          })
      }
      // 設(shè)置Row組件的寬度、對(duì)齊方式和內(nèi)外邊距
      .width('100%')
      .justifyContent(FlexAlign.SpaceBetween)
      .padding({
        left: '37lpx',
        top: '11lpx',
        bottom: '11lpx',
        right: '37lpx'
      })

      // 使用Flex布局,按行(FlexDirection.Row)包裹搜索歷史記錄
      Flex({
        direction: FlexDirection.Row,
        wrap: FlexWrap.Wrap,
      }) {
        // 遍歷歷史記錄數(shù)組,創(chuàng)建Text組件展示每一條歷史記錄
        ForEach(this.historyValueArr, (item: string, value: number) = > {
          Text(item)
            .padding({
              left: '15lpx',
              right: '15lpx',
              top: '7lpx',
              bottom: '7lpx'
            })
              // 設(shè)置背景顏色、圓角和間距
            .backgroundColor("#EFEFEF")
            .borderRadius(10)
            .margin('11lpx')
        })
      }
      // 設(shè)置Flex容器的寬度和內(nèi)外邊距
      .width('100%')
      .padding({
        left: '26lpx',
        top: '11lpx',
        bottom: '11lpx',
        right: '26lpx'
      })
    }
    // 設(shè)置Column容器的寬度、高度和背景顏色
    .width('100%')
    .height('100%')
    .backgroundColor("#F8F8F8")
  }
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67764
  • 鴻蒙
    +關(guān)注

    關(guān)注

    56

    文章

    2267

    瀏覽量

    42481
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1946

    瀏覽量

    29733
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-Web歷史記錄導(dǎo)航

    歷史記錄的末尾時(shí),調(diào)用forward()和backward()接口時(shí)將不執(zhí)行任何操作。 本文參考引用HarmonyOS官方開發(fā)文檔,基于API9。
    發(fā)表于 05-20 15:14

    怎樣清除protel99se的歷史文件記錄

    只要?jiǎng)?chuàng)建新文件,就會(huì)在文件菜單留下記錄,即使文件已刪除,文件菜單里仍然會(huì)有歷史記錄,怎樣清除這個(gè)歷史記錄呢?請(qǐng)老師解答,萬分感謝!
    發(fā)表于 04-23 17:30

    LabVIEW的輸入框可以做成帶歷史記錄的嗎?

    請(qǐng)問,LabVIEW的數(shù)值控件可以做成像百度一樣的,可以有歷史記錄顯示并可以選擇那樣的嗎?
    發(fā)表于 10-28 10:09

    ECS控制臺(tái)實(shí)例搜索的優(yōu)化與改進(jìn)

    結(jié)果),一定程度解決查詢實(shí)例列表的API無法模糊搜索,又需要模糊查詢的問題。并且支持Up,Down,Enter三種鍵盤操作。4. 搜索歷史記錄自動(dòng)
    發(fā)表于 03-26 15:04

    Cosmic STM8編譯器修訂歷史記錄?

    Cosmic STM8編譯器修訂歷史記錄?以上來自于谷歌翻譯以下為原文 Cosmic STM8 compiler revision history?
    發(fā)表于 05-13 16:07

    創(chuàng)建藍(lán)牙盒子在訂單歷史記錄中看不到

    你好,我想訂購一個(gè)樣品來嘗試建立一個(gè)自己的藍(lán)牙盒子。在我發(fā)送請(qǐng)求后,它會(huì)顯示您的訂單已成功創(chuàng)建,但我無法在訂單歷史記錄中看到它。關(guān)閉選項(xiàng)卡后,它會(huì)再次顯示圖表中的項(xiàng)目。以上來自于谷歌翻譯以下為原文
    發(fā)表于 07-22 06:55

    Agilent 81200數(shù)據(jù)發(fā)電機(jī)/分析儀平臺(tái)更改和修正歷史記錄

    81200 SW更改和增強(qiáng)歷史記錄(Apr02)
    發(fā)表于 08-28 06:33

    帶中移動(dòng)模組M6315的機(jī)器上傳到云平臺(tái)的歷史記錄的時(shí)間和機(jī)器本身記錄的時(shí)間不一致,

    帶中移動(dòng)模組M6315的機(jī)器上傳到云平臺(tái)的歷史記錄的時(shí)間和機(jī)器本身記錄的時(shí)間不一致,有些相差一個(gè)多月,是什么原因?要從哪些方向去分析?
    發(fā)表于 10-22 16:56

    富士康收入創(chuàng)造歷史記錄 并未受蘋果新手機(jī)高價(jià)格影響

    富士康集團(tuán)一位高管表示,無論是三季度還是今年前三季度,富士康的收入都創(chuàng)造了歷史記錄。
    的頭像 發(fā)表于 10-14 09:57 ?4586次閱讀

    2018年DRAM銷售額創(chuàng)歷史記錄新高 同比增長(zhǎng)39%

    據(jù)報(bào)道,市場(chǎng)研究公司DRAMeXchange在3月4日?qǐng)?bào)道稱,全球DRAM市場(chǎng)去年的銷售額達(dá)到99,655百萬美元,同比增長(zhǎng)39%,創(chuàng)歷史記錄新高。
    發(fā)表于 03-10 09:58 ?1452次閱讀

    微軟Edge瀏覽器更新:已支持同步歷史記錄

    據(jù)Windows Central報(bào)道,微軟Edge瀏覽器剛剛獲得了一項(xiàng)新功能,用戶可以跨設(shè)備打開瀏覽歷史記錄。
    的頭像 發(fā)表于 11-18 09:24 ?1934次閱讀

    微軟Edge瀏覽器支持歷史記錄和選項(xiàng)卡同步

    對(duì)于微軟Edge用戶來說,在多個(gè)設(shè)備上獲得相同的瀏覽體驗(yàn)將更加輕松。Edge穩(wěn)定版將迎來新的服務(wù)器端更新,同步歷史記錄和選項(xiàng)卡也能夠?qū)崿F(xiàn)了,當(dāng)然前提是你需要登錄微軟賬戶。
    的頭像 發(fā)表于 01-05 11:06 ?2132次閱讀

    火絨安全確認(rèn)QQ讀取瀏覽器歷史記錄 騰訊已更新版本修復(fù)

    日前,有網(wǎng)友反饋QQ、Tim等軟件會(huì)讀取本地瀏覽器的歷史記錄資料,引發(fā)大家對(duì)隱私、安全等問題的擔(dān)憂。 今天下午,火絨安全實(shí)驗(yàn)室公布了此事的查看結(jié)果。 按照火絨的說法,騰訊QQ/Tim的確存在獲取
    的頭像 發(fā)表于 01-18 18:24 ?4994次閱讀

    QQ、Tim等存在讀取瀏覽器歷史記錄現(xiàn)象

    日前,有網(wǎng)友反饋QQ、Tim等軟件會(huì)讀取本地瀏覽器的歷史記錄資料,引發(fā)大家對(duì)隱私、安全等問題的擔(dān)憂。
    的頭像 發(fā)表于 01-19 11:13 ?2215次閱讀
    QQ、Tim等存在讀取瀏覽器<b class='flag-5'>歷史記錄</b>現(xiàn)象

    uModule解決方案組合主板修訂歷史記錄(DC1758A)

    uModule解決方案組合主板修訂歷史記錄(DC1758A)
    發(fā)表于 04-19 11:05 ?4次下載
    uModule解決方案組合主板修訂<b class='flag-5'>歷史記錄</b>(DC1758A)