当前位置: 首页 > article >正文

纯血鸿蒙APP实战开发——文字展开收起案例

介绍

本示例介绍了 @ohos.measure 组件接口实现文字展开收起的功能。该场景多用于图文列表展示等。

效果图预览

使用说明

  • 点击展开按钮,展开全部文字。
  • 点击收起按钮,收起多余文字。

实现步骤

想要实现文字收起,难点在于如何判断展示多少文字可以达到只显示到指定行数(以两行为例)的目的。通过判断文字其在容器内的高度来将文字缩减到指定行数,可以实现收起效果的目的。利用 measure.measureTextSize 方法去分别计算文字总体的高度和两行文字的高度,再进行缩减文字,直到文字高度符合两行文字的要求。

  1. 使用measure.measureTextSize方法来判断总体文字的高度
let titleSize: SizeOptions = measure.measureTextSize({
  textContent: this.rawTitle, // 被计算文本内容
  constraintWidth: 350, // 被计算文本布局宽度
  fontSize: 16 // 被计算文本字体大小
})
  1. 使用measure.measureTextSize方法来判断两行文字的高度,当前为两行文字的高度
let twoLineSize: SizeOptions = measure.measureTextSize({
  textContent: this.rawTitle,
  constraintWidth: 350,
  fontSize: 16,
  maxLines: 2  // 被计算文本最大行数
})
  1. 减少接收文字字符数。当接收文字高度小于指定行数高度时,使文字显示两行,达到实现收起状态的目的。否则继续计算直到小于指定行数的高度
while (Number(titleSize.height) > Number(twoLineSize.height)) {
  clipTitle = clipTitle.substring(0, clipTitle.length - 1); // 每次减少一个字符长度,再进行比较计算,直到符合高度要求
  titleSize = measure.measureTextSize({
    textContent: clipTitle + '...' + '展开', // 按钮文字也要放入进行计算
    constraintWidth: 350,
    fontSize: 16
  });
}

高性能知识点

不涉及

工程结构&模块类型

   textexpand                                         // har
   |---component                                         
   |   |---ItemPart.ets                               // 文字展开收起组件
   |---view
   |   |---TextExpand.ets                             // TextExpand 页面

模块依赖

  1. 本实例依赖common模块来获取日志工具类logger。

http://www.kler.cn/a/447887.html

相关文章:

  • 鸿蒙学习笔记:用户登录界面
  • 面向对象编程:原理、实践与应用
  • Autosar入门_架构(Architecture)
  • 【Linux系统编程】:信号(2)——信号的产生
  • SAP RESTful架构和OData协议
  • 通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统
  • C# cad启动自动加载启动插件、类库编译 多个dll合并为一个
  • 图解HTTP-HTTP协议
  • 反归一化 from sklearn.preprocessing import MinMaxScaler
  • 2024年最新多目标优化算法:多目标麋鹿群优化算法(MOEHO)求解DTLZ1-DTLZ7及工程应用---盘式制动器设计,提供完整MATLAB代码
  • iframe和浏览器页签切换
  • 解决uniapp中使用axios在真机和模拟器下请求报错问题
  • 亚马逊API接口深度解析:如何高效获取商品详情与评论数据
  • 洛谷 P1644 跳马问题 C语言
  • (耗时4天制作)详细介绍macOS系统 本博文含有全英版 (全文翻译稿)
  • 【NLP 16、实践 ③ 找出特定字符在字符串中的位置】
  • 2024.12 迈向可解释和可解释的多模态大型语言模型:一项综合调查
  • JDK13主要特性
  • Mysql复习(一)
  • 【唐叔学算法】第18天:解密选择排序的双重魅力-直接选择排序与堆排序的Java实现及性能剖析
  • 前端知识补充—CSS
  • FFmpeg库之ffmpeg
  • sentinel来源访问控制(黑白名单)
  • 重拾设计模式-外观模式和适配器模式的异同
  • 九江网站建设SEO与优化推广的完美结合
  • 【机器学习】机器学习的基本分类-强化学习-Deep Q-Network (DQN)