HarmonyOS ArkUi 字符串<展開/收起>功能

效果圖:
在這里插入圖片描述

官方API:

@ohos.measure (文本計算)

  • 方式一
measure.measureTextSize
跟方式二使用一樣,只是API調用不同,可仔細查看官網
  • 方式二
    API 12+

@Preview
@Component
export struct CustomTextSpan {@State maxLines: number = 1// 臨時內容,用于計算@State contentTemp: string = ''// 折疊時 顯示內容@State showContent: string = ''// 是否展開@State isShow: boolean = false@Prop fontSize: number = 16@Prop fontColor: number | string = Color.Blue// 原始內容@Prop content: string ='被計算文被計算文本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容被計算文本內容'// 屏幕寬度  vp  (真實手機)下面會動態計算屏幕寬度@State w: number = -1// MeasureUtils  API12+提供的一種方式 也可以使用其他方式@State measureUtils: MeasureUtils = this.getUIContext().getMeasureUtils();@State computeHeight: SizeOptions = this.measureUtils.measureTextSize({textContent: this.content})@State computeLine: SizeOptions = this.measureUtils.measureTextSize({textContent: this.content})compute() {while (Number(this.computeHeight.height) > Number(this.computeLine.height)) {// 通過循環,每次減少一個字符長度,重新計算,直到高度滿足要求this.contentTemp = this.contentTemp.substring(0, this.contentTemp.length - 1);this.computeHeight = this.measureUtils.measureTextSize({textContent: this.contentTemp + '...' + '展開', // <按鈕文字>也要放入進行計算constraintWidth: px2vp(this.w),fontSize: this.fontSize});this.showContent = this.contentTemp + '...'}}aboutToAppear() {this.contentTemp = this.content// 真實手機動態計算屏幕的寬度this.w = display.getDefaultDisplaySync().widththis.computeHeight = this.measureUtils.measureTextSize({textContent: this.content,constraintWidth: px2vp(this.w),fontSize: this.fontSize})this.computeLine = this.measureUtils.measureTextSize({textContent: this.content,constraintWidth: px2vp(this.w),fontSize: this.fontSize,maxLines: this.maxLines})this.compute()}build() {Column() {if (!this.isShow) {Text() {Span(`${this.showContent}`)Span("展開").onClick(() => {this.isShow = !this.isShow}).fontColor(this.fontColor)}.width('100%').gesture(LongPressGesture().onAction((event: GestureEvent) => {promptAction.showToast({ message: "DSDASD" })}))}if (this.isShow) {Text(this.content).width('100%')Text("收起").width('100%').onClick(() => {this.isShow = !this.isShow}).width('100%').textAlign(TextAlign.End).fontColor(this.fontColor)}}.width('100%')}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42806.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

迭代器模式(大話設計模式)C/C++版本

迭代器模式 C #include <iostream> #include <string> #include <vector>using namespace std;// 迭代抽象類,用于定義得到開始對象、得到下一個對象、判斷是否到結尾、當前對象等抽象方法&#xff0c;統一接口 class Iterator { public:Iterator(){};virtu…

作為產品經理,如何用大模型給我們賦能?非常詳細,收藏我這篇就夠了

作為一名產品經理&#xff0c;如果您考慮轉行至大模型領域&#xff0c;您將能夠將產品管理技能與大模型技術相結合&#xff0c;從而在產品開發和創新方面獲得一系列好處。以下是轉行大模型對產品經理的一些潛在益處&#xff1a; 更深入的技術理解&#xff1a;了解大模型技術將…

LeetCode 1351, 1, 208

目錄 1351. 統計有序矩陣中的負數題目鏈接標簽簡答二分查找思路代碼 優化思路代碼 1. 兩數之和題目鏈接標簽思路代碼 208. 實現 Trie (前綴樹)題目鏈接標簽思路代碼 1351. 統計有序矩陣中的負數 題目鏈接 1351. 統計有序矩陣中的負數 標簽 數組 二分查找 矩陣 簡答二分查找…

使用 Python 處理 Lumerical 導出的 .txt 文件(完結)

使用 Python 處理 Lumerical 導出的 .txt 文件 引言正文以 , 隔開的波長與透射率以 \t 隔開的波長與透射率引言 之前在 添加鏈接描述 一文中我們已經介紹了如何將 Lumerical 仿真中的 S 參數相關數據導出為 .txt 文件。這里我們來分享如何使用 Python 對這些數據進行處理。 正…

如果國產BI工具也有頂流,它們一定會上榜

在數據驅動的今天&#xff0c;商業智能&#xff08;BI&#xff09;工具已成為企業不可或缺的助手&#xff0c;它們通過強大的數據處理和分析能力&#xff0c;幫助企業洞察市場趨勢&#xff0c;優化運營決策。如果BI工具界也有“頂流”&#xff0c;那么奧威BI、帆軟BI&#xff0…

原生CSS變量

原生CSS 變量 css中我們可以統一設置 變量 方便頁面維護 聲明 變量聲明的時候&#xff0c;變量名之前加上兩根連詞線&#xff08;–&#xff09;即可。例如&#xff1a; 聲明的變量是有作用域的&#xff0c;比如是在html中聲明的變量&#xff0c;那么該變量在html中的任何地方都…

我國甜菜堿行業規模較大 未來行業發展前景較好

我國甜菜堿行業規模較大 未來行業發展前景較好 甜菜堿化學名稱三甲基甘氨酸&#xff0c;是一種在動植物體內廣泛存在的季銨型生物堿。它具有多種生物學功能&#xff0c;包括滲透調節、甲基供體等&#xff0c;廣泛應用于飼料、食品、醫藥和化妝品等行業。甜菜堿的提取主要來源于…

揭秘SmartEDA:電路仿真軟件如何貫穿課前課中課后,助力電子學習新紀元!

在電子設計與自動化的學習道路上&#xff0c;一款強大的電路仿真軟件往往能為學生們帶來事半功倍的效果。今天&#xff0c;我們就來深入探討一下SmartEDA這款電路仿真軟件在課前、課中、課后的全方位應用&#xff0c;看看它如何助力我們的電子學習步入新紀元&#xff01; 1、課…

直播平臺集成美顏工具詳解:視頻美顏SDK開發指南

本篇文章&#xff0c;小編將詳細介紹如何在直播平臺中集成美顏工具&#xff0c;幫助開發者更好地理解視頻美顏SDK的開發過程。 一、美顏工具的作用和原理 1.1 美顏工具的作用 美顏工具主要用于提升直播視頻的畫面質量&#xff0c;讓主播和觀眾在鏡頭前看起來更加美觀。這些功…

2024年最新ComfyUI漢化及manager插件安裝詳解!

前言 在ComfyUI文生圖詳解中&#xff0c;學習過如果想要安裝相應的模型&#xff0c;需要到模型資源網站&#xff08;抱抱臉、C站、魔塔、哩布等&#xff09;下載想要的模型&#xff0c;手動安裝到ComfyUI安裝目錄下對應的目錄中。 為了簡化這個流程&#xff0c;我們需要安裝Co…

MacOS下更新curl

蘋果自帶的curl不支持Https&#xff0c;我們可以通過curl -V看到如下結果 curl 7.72.0 (x86_64-apple-darwin18.6.0) libcurl/7.72.0 zlib/1.2.12 libidn2/2.3.7 librtmp/2.3 Release-Date: 2020-08-19 Protocols: dict file ftp gopher http imap ldap ldaps pop3 rtmp rtsp …

Linux workqueue介紹

Linux中的workqueue機制就是為了簡化內核線程的創建。通過調用workqueue的接口就能創建內核線程。并且可以根據當前系統的CPU的個數創建線程的數量&#xff0c;使得線程處理的事務能夠并行化。 工作隊列&#xff08;workqueue&#xff09;是另外一種將工作推后執行的形式。工作…

04:C語言流程控制

C語言流程控制 1、選擇結構1.1、第一種&#xff1a;if ...else / if ...else if...else1.2、第二種&#xff1a;switch case 2、循環結構2.1、第一種&#xff1a;for循環2.1、第二種&#xff1a;while循環2.2、第三種&#xff1a;do...while循環 在C語言程序里&#xff0c;一共…

為什么要考數據庫證書?

考取數據庫證書有多方面的理由和好處&#xff0c;這些好處不僅限于個人職業發展&#xff0c;也涉及到提升專業技能、增強競爭力以及獲得行業認可等方面。以下是一些主要的原因&#xff1a; 提升專業技能&#xff1a;數據庫證書考試通常要求考生掌握一定的數據庫理論知識和實踐技…

Java數據結構9-排序

1. 排序的概念及引用 1.1 排序的概念 排序&#xff1a;所謂排序&#xff0c;就是使一串記錄&#xff0c;按照其中的某個或某些關鍵字的大小&#xff0c;遞增或遞減的排列起來的操作。 穩定性&#xff1a;假定在待排序的記錄序列中&#xff0c;存在多個具有相同的關鍵字的記錄…

【vuejs】vue-router多層級路由配置以及頁面嵌套的處理

1. 多層級頁面嵌套概念 1.1 什么是多層級頁面嵌套 多層級頁面嵌套指的是在單頁面應用&#xff08;SPA&#xff09;中&#xff0c;頁面結構由多個嵌套的組件組成&#xff0c;每個組件可能代表不同的頁面或頁面區域。這種結構允許開發者將應用組織成多個模塊&#xff0c;每個模…

認證資訊|Bluetooth SIG認證

在當今高度互聯的世界中&#xff0c;無線技術的普及已經成為我們生活和工作中不可或缺的一部分。作為領先的無線通信技術之一&#xff0c;Bluetooth技術以其穩定性、便捷性和廣泛的應用場景而備受青睞。然而&#xff0c;要想在激烈的市場競爭中脫穎而出&#xff0c;獲得Bluetoo…

6、Redis系統-數據結構-04-Hash

四、哈希表&#xff08;Hashtable&#xff09; 哈希表是一種高效的鍵值對數據結構&#xff0c;通過散列函數將鍵映射到表中的位置&#xff0c;實現快速的插入、刪除和查找操作。Redis 廣泛使用哈希表來實現 Hash 對象和數據庫的鍵值存儲。以下將從結構設計、哈希沖突與鏈式哈希…

深入源碼,探究#、$號替換符的區別

在Mybatis的日常使用過程中以及在一些技術論壇上我們都能常常聽到&#xff0c;不要使用$符號來進行SQL的編寫&#xff0c;要使用#符號&#xff0c;否則會有SQL注入的風險。那么&#xff0c;為什么在使用$符號時會有注入的風險呢&#xff0c;以及#號為什么不會有風險呢&#xff…

C/C+++服務器之libuv的使用實戰

libuv libuv簡介 1: 開源跨平臺的異步IO庫, 主要功能有網絡異步&#xff0c;文件異步等。 2: libuv主頁: http://libuv.org/ 3: libuv是node.js的底層庫; 4: libuv的事件循環模型: epoll, kqueue, IOCP, event ports; 異步 TCP 與 UDP sockets; DNS 解析 異步文件讀寫; 信號處…