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

鸿蒙UI系统组件17——富文本展示(RichText)

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。

1、概 述

RichText组件是一个轻量级的富文本显示组件,他支持HTML格式的文本进行解析与显示。

⭐️ 适用场景:

  • RichText组件适用于加载与显示一段HTML字符串,且不需要对显示效果进行较多自定义的应用场景。RichText组件仅支持有限的通用属性和事件。(后文将会介绍)

  • RichText组件底层复用了Web组件来提供基础能力,包括但不限于HTML页面的解析、渲染等。因此使用RichText组件需要遵循Web约束条件。例如宽度问题:

移动设备的视口默认值大小为980px(默认值可以确保大部分网页在移动设备下可以正常浏览)。如果RichText组件宽度低于这个值,content内部的HTML则可能会产生一个可以滑动的页面被RichText组件包裹。如果想替换默认值,可以在content中添加以下标签:

<meta name="viewport" content="width=device-width">

⭐️ 不适用场景:

  • RichText组件不适用于对HTML字符串的显示效果进行较多自定义的应用场景。例如RichText组件不支持通过设置属性与事件,来修改背景颜色、字体颜色、字体大小、动态改变内容等。【在这种情况下推荐使用Web组件】

  • RichText组件比较消耗内存资源,而且有一些重复使用RichText组件的场景下,比如在List下循环重复使用RichText时,会出现卡顿、滑动响应慢等现象。【在这种情况下,推荐使用RichEditor组件】

注意:

RichText组件无法根据内容自适应设置宽高属性,需要我们在开发时设置显示布局。

2、组件核心API介绍

👉🏻 组件接口

RichText组件接收一个HTML规范的字符串,组件定义如下:

RichText(content:string)

👉🏻 事件

目前RichText组件只支持两个事件,分别是onStart和onComplete分别表示加载前和加载完成,接口如下:

+ onStart(callback: () => void)+ onComplete(callback: () => void)

👉🏻 属性

目前RichText组件只支持width,height,size,layoutWeight四个属性。

👉🏻 组件支持渲染的HTML标签

  • <h1> ... <h6>

    被用来定义HTML,<h1>定义重要等级最高的标题,<h6>定义重要等级最低的标题。

  • <p></p>

    定义段落。

  • <br/>

    插入一个简单的换行符。

  • <font/>

   设置规定文本的字体、字体尺寸、字体颜色。在标签中font size能够设置的值只有1到7的数字,默认值是3,由于标签在HTML 4.01中不建议使用,在XHTML1.0 Strict DTD中不支持,所以不建议使用此标签,【使用CSS代替。CSS语法:<p style="font-size: 35px; font-family: verdana; color: rgb(24,78,228)">】

  • <hr/>

    定义HTML页面中的主题变化(比如话题的转移),并显示为一条水平线。

  • <image></image>

    用来定义图片。

  • <div></div>

    常用于组合块级元素,以便通过CSS来对这些元素进行格式化。

  • <i></i>

    定义与文本中其余部分不同的部分,并把这部分文本呈现为斜体文本。

  • <u></u>

    定义与常规文本风格不同的文本,像拼写错误的单词或者汉语中的专有名词,应尽量避免使用<u>为文本加下划线,用户会把它混淆为一个超链接。

  • <style></style>

    定义HTML文档的样式信息。

  • style

    属性规定元素的行内样式,写在标签内部,在使用的时候需用引号来进行区分,并以; 间隔样式,style='width: 500px;height: 500px;border: 1px soild;margin: 0 auto;'。

  • <script></script>

    用于定义客户端脚本,比如JavaScript。

3、案 例

一个简单的使用案例如下:

图片

代码如下:​​​​​​​

// xxx.ets@Entry@Componentstruct RichTextExample {  @State data: string = '<h1 style="text-align: center;">h1标题</h1>' +  '<h1 style="text-align: center;"><i>h1斜体</i></h1>' +  '<h1 style="text-align: center;"><u>h1下划线</u></h1>' +  '<h2 style="text-align: center;">h2标题</h2>' +  '<h3 style="text-align: center;">h3标题</h3>' +  '<p style="text-align: center;">p常规</p><hr/>' +  '<div style="width: 500px;height: 500px;border: 1px solid;margin: 0 auto;">' +  '<p style="font-size: 35px;text-align: center;font-weight: bold; color: rgb(24,78,228)">字体大小35px,行高45px</p>' +  '<p style="background-color: #e5e5e5;line-height: 45px;font-size: 35px;text-indent: 2em;">' +  '<p>这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字</p>';  build() {    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center,      justifyContent: FlexAlign.Center }) {      RichText(this.data)        .onStart(() => {          console.info('RichText onStart');        })        .onComplete(() => {          console.info('RichText onComplete');        })        .width(500)        .height(500)        .backgroundColor(0XBDDB69)      RichText('layoutWeight(1)')        .onStart(() => {          console.info('RichText onStart');        })        .onComplete(() => {          console.info('RichText onComplete');        })        .size({ width: '100%', height: 110 })        .backgroundColor(0X92D6CC)        .layoutWeight(1)      RichText('layoutWeight(2)')        .onStart(() => {          console.info('RichText onStart');        })        .onComplete(() => {          console.info('RichText onComplete');        })        .size({ width: '100%', height: 110 })        .backgroundColor(0X92C48D)        .layoutWeight(2)    }  }}


http://www.mrgr.cn/news/58672.html

相关文章:

  • Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题
  • VMware Workstation 17.6.1 Pro 全开放下载咯
  • 【C】数组(array)
  • nuxt3项目创建
  • 数字图像处理的概念(一)
  • ffmpeg视频滤镜: 裁剪-crop
  • 批量归一化(Batch Normalization)
  • Python爬虫教程:从入门到精通
  • 考研要求掌握的C语言程度(堆排序)1
  • 【数据结构初阶】二叉树---堆
  • 总结性标题:高效导入文本数据,探索 MySQL 与 Java 的最佳实践
  • kaggle在线训练深度学习模型
  • moment.js 获取相关时间节点(今天、本周、本月、本季度、本年)
  • 安全见闻---清风
  • 2024mathorcup大数据竞赛选题建议及思路来啦!
  • 大数据治理平台建设规划方案(71页WORD)
  • 【后端秘籍】【JVM】第二篇
  • 【永中软件-注册/登录安全分析报告】
  • Elliott Wave Prophet,艾略特波浪预测指标!预测未来走势!免费公式!(指标教程)
  • 双十一送你一份购物攻略,绿联NAS DXP2800评测
  • 加密算法入门:DES S盒输出计算方法
  • es实现桶聚合
  • OmniAI,OCR效果强的离谱,“牛马”必备
  • 01.01、判定字符是否唯一
  • essay
  • 算法的学习笔记—数组中只出现一次的数字(牛客JZ56)