鸿蒙5.0版开发:ArkTS基础组件(RichText)

94 篇文章 0 订阅
90 篇文章 0 订阅

往期鸿蒙全套实战文章必看:


RichText

富文本组件,解析并显示HTML格式文本。

  • 适用场景:

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

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

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

    <span style="background-color:#f6f8fa"><span style="color:#000000"><code><img data-cke-saved-src="https://docs.openharmony.cn/copy.png" src="https://docs.openharmony.cn/copy.png" alt="" width="20" height="20" class="copy-img" /><span style="color:#000000"><<span style="color:olive">meta</span> name=<span style="color:green">"viewport"</span> content=<span style="color:green">"width=device-width"</span>></span>
    <strong>html</strong></code></span></span>
  • 不适用场景:

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

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

说明:

  • 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
  • 该组件无法根据内容自适应设置宽高属性,需要开发者设置显示布局。

子组件

不包含子组件。

接口

RichText(content:string)

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

参数:

参数名参数类型必填参数描述
contentstring表示HTML格式的字符串。

事件

onStart

onStart(callback: () => void)

加载网页时触发。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

onComplete

onComplete(callback: () => void)

网页加载结束时触发。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

属性

只支持通用属性中width,height,size,layoutWeight四个属性。由于padding,margin,constraintSize属性使用时与通用属性描述不符,暂不支持。

支持标签

名称描述示例
<h1>–<h6>被用来定义HTML,<h1>定义重要等级最高的标题,<h6>定义重要等级最低的标题。<h1>这是一个标题</h1><h2>这是h2标题</h2>
<p></p>定义段落。<p>这是一个段落</p>
<br/>插入一个简单的换行符。<p>这是一个段落<br/>这是换行段落</p>
<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)”><font size=“3” face=“arial” color=“red”>这是一段红色字体。</font>
<hr/>定义HTML页面中的主题变化(比如话题的转移),并显示为一条水平线。<p>这个一个段落</p><hr/><p>这是一个段落</p>
<image></image>用来定义图片。<image src=“resource://rawfile/icon.png”></image>
<div></div>常用于组合块级元素,以便通过CSS来对这些元素进行格式化。<div style=‘color:#0000FF’><h3>这是一个在div元素中的标题。</h3></div>
<i></i>定义与文本中其余部分不同的部分,并把这部分文本呈现为斜体文本。<i>这是一个斜体</i>
<u></u>定义与常规文本风格不同的文本,像拼写错误的单词或者汉语中的专有名词,应尽量避免使用<u>为文本加下划线,用户会把它混淆为一个超链接。<p><u>这是带有下划线的段落</u></p>
<style></style>定义HTML文档的样式信息。<style>h1{color:red;}p{color:blue;}</style>
style属性规定元素的行内样式,写在标签内部,在使用的时候需用引号来进行区分,并以; 间隔样式,style=‘width: 500px;height: 500px;border: 1px soild;margin: 0 auto;’。<h1 style=‘color:blue;text-align:center’>这是一个标题</h1><p style=‘color:green’>这是一个段落。</p>
<script></script>用于定义客户端脚本,比如JavaScript。<script>document.write(“Hello World!”)</script>

示例

示例效果请以真机运行为准,当前IDE预览器不支持。

<span style="background-color:#f6f8fa"><span style="color:#000000"><code><img data-cke-saved-src="https://docs.openharmony.cn/copy.png" src="https://docs.openharmony.cn/copy.png" alt="" width="20" height="20" class="copy-img" /><span style="color:green">// xxx.ets</span>
<span style="color:green">@Entry</span>
<span style="color:green">@Component</span>
struct <span style="color:#0055af">RichTextExample</span> {
  <span style="color:green">@State</span> data: <span style="color:green">string</span> = <span style="color:green">'<h1 style="text-align: center;">h1标题</h1>'</span> +
  <span style="color:green">'<h1 style="text-align: center;"><i>h1斜体</i></h1>'</span> +
  <span style="color:green">'<h1 style="text-align: center;"><u>h1下划线</u></h1>'</span> +
  <span style="color:green">'<h2 style="text-align: center;">h2标题</h2>'</span> +
  <span style="color:green">'<h3 style="text-align: center;">h3标题</h3>'</span> +
  <span style="color:green">'<p style="text-align: center;">p常规</p><hr/>'</span> +
  <span style="color:green">'<div style="width: 500px;height: 500px;border: 1px solid;margin: 0 auto;">'</span> +
  <span style="color:green">'<p style="font-size: 35px;text-align: center;font-weight: bold; color: rgb(24,78,228)">字体大小35px,行高45px</p>'</span> +
  <span style="color:green">'<p style="background-color: #e5e5e5;line-height: 45px;font-size: 35px;text-indent: 2em;">'</span> +
  <span style="color:green">'<p>这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字</p>'</span>;

  <span style="color:#000000">build</span>() {
    <span style="color:#0055af">Flex</span>({ direction: <span style="color:#0055af">FlexDirection</span>.Column, alignItems: <span style="color:#0055af">ItemAlign</span>.Center,
      justifyContent: <span style="color:#0055af">FlexAlign</span>.Center }) {
      <span style="color:#0055af">RichText</span>(<span style="color:#0055af">this</span>.data)
        .<span style="color:#000000">onStart</span>(<span style="color:olive">() =></span> {
          <span style="color:#0055af">console</span>.<span style="color:#000000">info</span>(<span style="color:green">'RichText onStart'</span>);
        })
        .<span style="color:#000000">onComplete</span>(<span style="color:olive">() =></span> {
          <span style="color:#0055af">console</span>.<span style="color:#000000">info</span>(<span style="color:green">'RichText onComplete'</span>);
        })
        .<span style="color:#000000">width</span>(<span style="color:navy">500</span>)
        .<span style="color:#000000">height</span>(<span style="color:navy">500</span>)
        .<span style="color:#000000">backgroundColor</span>(<span style="color:navy">0XBDDB69</span>)
      <span style="color:#0055af">RichText</span>(<span style="color:green">'layoutWeight(1)'</span>)
        .<span style="color:#000000">onStart</span>(<span style="color:olive">() =></span> {
          <span style="color:#0055af">console</span>.<span style="color:#000000">info</span>(<span style="color:green">'RichText onStart'</span>);
        })
        .<span style="color:#000000">onComplete</span>(<span style="color:olive">() =></span> {
          <span style="color:#0055af">console</span>.<span style="color:#000000">info</span>(<span style="color:green">'RichText onComplete'</span>);
        })
        .<span style="color:#000000">size</span>({ width: <span style="color:green">'100%'</span>, height: <span style="color:navy">110</span> })
        .<span style="color:#000000">backgroundColor</span>(<span style="color:navy">0X92D6CC</span>)
        .<span style="color:#000000">layoutWeight</span>(<span style="color:navy">1</span>)
      <span style="color:#0055af">RichText</span>(<span style="color:green">'layoutWeight(2)'</span>)
        .<span style="color:#000000">onStart</span>(<span style="color:olive">() =></span> {
          <span style="color:#0055af">console</span>.<span style="color:#000000">info</span>(<span style="color:green">'RichText onStart'</span>);
        })
        .<span style="color:#000000">onComplete</span>(<span style="color:olive">() =></span> {
          <span style="color:#0055af">console</span>.<span style="color:#000000">info</span>(<span style="color:green">'RichText onComplete'</span>);
        })
        .<span style="color:#000000">size</span>({ width: <span style="color:green">'100%'</span>, height: <span style="color:navy">110</span> })
        .<span style="color:#000000">backgroundColor</span>(<span style="color:navy">0X92C48D</span>)
        .<span style="color:#000000">layoutWeight</span>(<span style="color:navy">2</span>)
    }
  }
}
<strong>ts</strong></code></span></span>

看完三件事❤️

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注作者,不定期分享原创知识。
  • 同时可以期待后续文章ing🚀。 
Richtext组件是一种富文本组件,适用于Android和iOS平台。它可以用于实现内联或与内联块组合,并支持嵌套的<span>标签,以及样式的继承和覆盖。因此,可以将Richtext视为具有更强大用法的更通用的<text>组件。通过设置Richtext组件的selectable属性,可以实现长按选中文本内容的效果。这样,用户可以将光标放在文本内容上,长按选择并复制文本。 富文本的作用是可以在一个文本中包含不同的颜色、不同的字号、不同的背景颜色的文本。通过使用rich-text属性,可以实现对文本的样式进行更细致的控制,达到更好的呈现效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [weex-richtext:适用于AndroidiOS的Weex RichText组件](https://download.csdn.net/download/weixin_42126399/18226837)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [微信小程序常用组件实战](https://blog.csdn.net/chengqiuming/article/details/126747735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [小程序开发组件rich-text富文本)](https://blog.csdn.net/JackJia2015/article/details/86300651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值