# RichText 富文本组件,解析并显示HTML格式文本。 - 适用场景: RichText组件适用于加载与显示一段HTML字符串,且不需要对显示效果进行较多自定义的应用场景。RichText组件仅支持有限的通用属性和事件。具体见[属性](#属性)与[事件](#事件)小节。 RichText组件底层复用了Web组件来提供基础能力,包括但不限于HTML页面的解析、渲染等。因此使用RichText组件需要遵循Web约束条件。常见典型约束如下: 移动设备的视口默认值大小为980px,默认值可以确保大部分网页在移动设备下可以正常浏览。如果RichText组件宽度低于这个值,content内部的HTML则可能会产生一个可以滑动的页面被RichText组件包裹。如果想替换默认值,可以在content中添加以下标签: ```html ``` - 不适用场景: RichText组件不适用于对HTML字符串的显示效果进行较多自定义的应用场景。例如RichText组件不支持通过设置属性与事件,来修改背景颜色、字体颜色、字体大小、动态改变内容等。在这种情况下,推荐使用[Web组件](../../apis-arkweb/arkts-basic-components-web.md)。 RichText组件消耗较多内存资源,在List下循环重复使用RichText组件时,会出现卡顿、滑动响应迟缓等现象。 > **说明:** > > - 该组件从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 > - 该组件无法根据内容自适应设置宽高属性,需要开发者设置显示布局。 > - 该组件不再更新和维护,推荐使用[Web组件](../../apis-arkweb/arkts-basic-components-web.md)。 ## 子组件 不包含子组件。 ## 接口 RichText(content:string | Resource) **系统能力:** SystemCapability.ArkUI.ArkUI.Full **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------- | ------------- | -------- | | content | string \| [Resource](ts-types.md#resource) 20+ | 是 | 表示HTML格式的字符串或者本地资源文件。 | ## 事件 ### onStart onStart(callback: () => void) **系统能力:** SystemCapability.ArkUI.ArkUI.Full **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------- | ------------- | -------- | | callback | () => void | 是 | 加载网页时触发回调。 | ### onComplete onComplete(callback: () => void) **系统能力:** SystemCapability.ArkUI.ArkUI.Full **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------- | ------------- | -------- | | callback | () => void | 是 | 网页加载结束时触发回调。 | ## 属性 只支持[通用属性](ts-component-general-attributes.md)中width,height,size,layoutWeight四个属性。由于padding,margin,constraintSize属性使用时与通用属性描述不符,暂不支持。 ## 支持标签 | 名称 | 描述 | 示例 | | -------- | -------- | -------- | | \
\
| 定义段落。 | \这是一个段落\
| | \这是一个段落\
这是换行段落\
| \这是一段红色字体。\ | | \
这个一个段落\
\这是一个段落\
| | \\这是带有下划线的段落\\
| | \ | 定义HTML文档的样式信息。 | \ | | style | 属性规定元素的行内样式,写在标签内部,在使用的时候需用引号来进行区分,并以; 间隔样式,style='width: 500px;height: 500px;border: 1px soild;margin: 0 auto;'。 | \这是一个段落。\
| | \ | 用于定义客户端脚本,比如JavaScript。 | \ | ## 示例 示例效果请以真机运行为准,当前DevEco Studio预览器不支持。 ```ts // xxx.ets @Entry @Component struct RichTextExample { @State data: string = 'p常规
字体大小35px,行高45px
' + '' + '
这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
'; 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) } } } ```  加载本地资源文件。 通过$rawfile方式加载。 ```ts // xxx.ets @Entry @Component struct RichTextComponent { build() { Column() { // 通过$rawfile加载本地资源文件。 RichText($rawfile("index.html")) } } } ``` 通过resources协议加载,适用Webview加载带有"#"路由的链接。 使用 `resource://rawfile/` 协议前缀可以避免常规 `$rawfile` 方式在处理带有"#"路由链接时的局限性。当URL中包含"#"号时,"#"后面的内容会被视为锚点(fragment)。 ```ts // xxx.ets @Entry @Component struct RichTextComponent { build() { Column() { // 通过resource协议加载本地资源文件。 RichText("resource://rawfile/index.html#home") } } } ``` 在“src\main\resources\rawfile”文件夹下创建index.html: 加载的html文件。 ```htmlHello World
```