深度解析 HarmonyOS 中的 RichEditor:实现图文混排与交互式编辑的利器

news2024/12/21 5:48:00

创建RichEditor组件

  1. 不使用属性字符串创建RichEditor组件
    适用于展示简单的图文内容,或格式统一的内容,如代码编辑器。
controller: RichEditorController = new RichEditorController();
options: RichEditorOptions = { controller: this.controller };

RichEditor(this.options)
    .onReady(() => {
        this.controller.addTextSpan('示例文本', {
            style: {
                fontColor: Color.Black,
                fontSize: 15
            }
        });
    });
    ```
2. 使用属性字符串创建RichEditor组件
适用于需要美化和内容强调的场景,可通过丰富的样式自定义内容。

mutableStyledString: MutableStyledString = new MutableStyledString(“示例文本”, [
{
start: 0,
length: 4,
styledKey: StyledStringKey.FONT,
styledValue: this.fontStyle
}
]);

controller: RichEditorStyledStringController = new RichEditorStyledStringController();
options: RichEditorStyledStringOptions = { controller: this.controller };

RichEditor(this.options)
.onReady(() => {
this.controller.setStyledString(this.mutableStyledString);
});
```
设置属性

  1. 自定义选择菜单
    通过 bindSelectionMenu 方法为文本添加自定义选择菜单,例如翻译或加粗选项。
RichEditor(this.options)
    .bindSelectionMenu(RichEditorSpanType.TEXT, this.SystemMenu, ResponseType.LongPress, {})
    .width(300)
    .height(300);

@Builder

SystemMenu() {
    Menu() {
        MenuItem({ startIcon: this.theme.copyIcon, content: "复制" });
        MenuItem({ startIcon: this.theme.pasteIcon, content: "粘贴" });
    }
    .backgroundColor(Color.White)
    .width(200);
}
  1. 设置光标和手柄颜色
RichEditor(this.options)
    .caretColor(Color.Orange)
    .width(300)
    .height(300);
  1. 添加提示文本
    通过 placeholder 属性设置输入框的占位提示文本。
RichEditor(this.options)
    .placeholder("请输入内容...", {
        fontColor: Color.Gray,
        font: {
            size: 15,
            family: "HarmonyOS Sans"
        }
    })
    .width(300)
    .height(300);

添加事件

  1. 组件初始化完成的回调
RichEditor(this.options)
    .onReady(() => {
        this.controller.addTextSpan('组件初始化完成。', {
            style: {
                fontColor: Color.Black,
                fontSize: 15
            }
        });
    });
  1. 文本选中回调
RichEditor(this.options)
    .onSelect((value: RichEditorSelection) => {
        console.log('选中内容: ', JSON.stringify(value));
    });
  1. 图文内容变化的回调
    变化前回调:onWillChange
    变化后回调:onDidChange
RichEditor(this.options)
    .onWillChange((value: RichEditorChangeValue) => {
        console.log('变化前:', value);
        return true;
    })
    .onDidChange((rangeBefore: TextRange, rangeAfter: TextRange) => {
        console.log('变化后: ', rangeBefore, rangeAfter);
        return true;
    });
  1. 输入法回调
    输入内容前回调:aboutToIMEInput
    输入完成回调:onIMEInputComplete
RichEditor(this.options)
    .aboutToIMEInput((value: RichEditorInsertValue) => {
        console.log('输入法内容前:', value);
        return true;
    })
    .onIMEInputComplete((value: RichEditorTextSpanResult) => {
        console.log('输入法完成:', value);
        return true;
    });
  1. 粘贴内容的回调
RichEditor(this.options)
    .onPaste(() => {
        console.log('触发粘贴回调');
    });
  1. 剪切内容的回调
RichEditor(this.options)
    .onCut(() => {
        console.log('触发剪切回调');
    });

总结
RichEditor是一个功能强大的组件,支持从简单的文本展示到复杂的富文本编辑。通过灵活的属性设置和事件回调,可以满足多样化的图文编辑需求,提升用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【mac 终端美化】oh my zsh

快捷的mac终端美化方法。 以下是效果图,比较朴素,但是相比默认方案会好看一些,也能明显查看输入的命令,不会和输出混在一起。 下载主题 访问网址:https://iterm2colorschemes.com/,下载网页的压缩包并解…

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备 一、前提条件 确保路由器硬件支持: OpenWrt 路由器需要足够的存储空间和 CPU 性能来运行 Tailscale。确保设备架构支持 Tailscale 二进制文件,例…

【笔记】深度学习模型评估指标

推荐链接: (0)多分类器的评价指标 (1)泛化误差的评价方法:【机器学习】模型评估与选择(留出法、交叉验证法、查全率、查准率、偏差、方差) (2)机器学习&…

Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表

文章目录 Linux性能监控命令_nmon 安装与使用安装解压创建nmono目录解压到nmono目录当中切换到sources目录下解压 配置环境变量创建软链接到 /usr/bin/ 目录下打开 配置文件 配置环境变量在底部增加如下注册 使用使用说明监控监控CPU监控内存监控磁盘监控网络监控文件系统 后台…

串口通信控制LED灯

做这个东西的目的是锻炼一下自己的编程能力以及系统思维能力 首先,清楚自己要干什么,正点原子大家应该都看过,系统框图是一个比较重要的东西,引导我们去设计和思考。 下面先给出系统框图: 模块划分好后,结构…

WPF+MVVM案例实战与特效(四十五)- 打造优雅交互:ListBox 的高级定制与行为触发(侧边菜单交互面板)

文章目录 1、引言2、案例效果3、案例实现1、依赖安装2、文件创建3、代码实现1、依赖引用与上下文2、个性化视觉效果:自定义 ItemContainerStyle3、页面样式与布局完整代码4、ViewModel 逻辑实现5、子界面代码:3、实现效果4、源代码获取5、总结1、引言 在WPF应用程序开发中,…

分享两个爬虫练习网站+一个python游戏网站

目录 第一个网站第二个Python游戏网站 第一个网站 网站一 第二个 网站二 Python游戏网站 网站三

空天地遥感数据识别与计算--数据分析如何助力农林牧渔、城市发展、地质灾害监测等行业革新

在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而,对于许多专业人士而言,如何高效地处…

C++中的进程虚拟内存布局

进程虚拟内存布局 进程虚拟内存布局: .text(代码段):存放的是程序源代码编译后的机器指令,是只读的。 .rodata(只读数据段):存放的是程序中的只读数据,一般是程序里面的…

鸿蒙开发-ArkTS 创建自定义组件

在 ArkTS 中创建自定义组件是一个相对简单但功能强大的过程。以下是如何在 ArkTS 中创建和使用自定义组件的详细步骤: 一、定义自定义组件 使用Component注解:为了注册一个组件,使其能够在其他文件中被引用,你需要使用Component…

计算机网络B重修班-期末复习

[TOC] (计算机网络B重修班-期末复习) 一、单选 (20题,1分/题,共20分) 二、判断 (10题,1分/题,共10分) 三、填空 (10题,1分/题,共10…

SSH连接成功,但VSCode连接不成功

环境 在实验室PC上连接服务器234 解决方案:在VSCode中重新添加远程主机 删除旧的VSCode Server 在远程主机上,VSCode会安装一个‘vscode-server’服务来支持远程开发,有时旧的‘vscode-server’文件可能会导致问题,删除旧的&am…

揭开 Choerodon UI 拖拽功能的神秘面纱

01 引言 系统的交互方式主要由点击、选择等组成。为了提升 HZERO 系统的用户体验、减少部分操作步骤,组件库集成了卓越的拖拽功能,让用户可以更高效流畅的操作系统。 例如:表格支持多行拖拽排序、跨表数据调整、个性化调整列顺序&#xff1…

面试题整理9----谈谈对k8s的理解1

谈谈对k8s的理解 1. Kubernetes 概念 1.1 Kubernetes是什么 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的…

Elasticsearch:什么是信息检索?

信息检索定义 信息检索 (IR) 是一种有助于从大量非结构化或半结构化数据中有效、高效地检索相关信息的过程。信息(IR)检索系统有助于搜索、定位和呈现与用户的搜索查询或信息需求相匹配的信息。 作为信息访问的主要形式,信息检索是每天使用…

【深度学习】 零基础介绍卷积神经网络(CNN)

CNN学习 零基础介绍写个CNN最简单的代码一. 概述二. 搭建CNN1. 输入层2. 卷积层3. 激活层4. 池化层5. 全连接层6. 网络搭建小结7. 损失函数8. 梯度下降9. 反向传播10. 模型评估与正则化11. 尝试搭建自己的第一个CNN 三. 经典CNN结构四. 猫狗识别项目实践1. Paddle实现版本&…

flutter 使用dio 请求go语言后台数据接口展示瀑布流图片

添加依赖 dependencies:flutter:sdk: flutterdio: ^5.0.0 # 请检查最新版本flutter_staggered_grid_view: ^0.4.0 添加网络权限 <uses-permission android:name"android.permission.INTERNET" /> go后端代码 图片存放目录 // main.go package mainimport (&q…

ZYNQ初识2(zynq_7010)基于vivado,从PL端调用PS端的时钟

由于需要进行一些FPGA的简单开发&#xff0c;但板载PL端没有焊接晶振&#xff0c;所以需要从PS端借用时钟到PL端使用。 首先新建项目&#xff0c;根据自己的板载选择芯片&#xff0c;我的板载芯片是zynq_7010。 一路next&#xff0c;在自己的vivado的工作文档新建文件夹并给自…

Go语言启动独立进程

文章目录 问题解决方案1. **将 npc.exe 启动为独立的进程**2. **修改 exec.Command 函数**示例代码解释为什么这样有效注意 问题 在你当前的代码中&#xff0c;调用 exec.Command("XXX.exe") 启动 XXX.exe 程序时&#xff0c;这个程序是由 Go 程序直接启动的。如果 …

oracle client linux服务器安装教程

p13390677_112040_Linux-x86-64_4of7.zip 安装前&#xff0c;确认/etc/hosts文件已配置正确 cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.2…