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

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

创建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.kler.cn/a/445924.html

相关文章:

  • 渗透测试-前端加密分析之RSA加密登录(密钥来源服务器)
  • Java图片拼接
  • Layui table不使用url属性结合laypage组件实现动态分页
  • [Unity] 【VR】【游戏开发】在VR中使用New Input System获取按键值的完整教程
  • 项目搭建+删除(单/批)
  • Android详解——ConstraintLayout约束布局
  • GO环境安装和配置
  • Linux Systemd基础教程
  • 【Linux】磁盘空间莫名消失,找不到具体原因的思路
  • CSS(13):2D
  • Tomcat原理(5)——tomcat最终实现
  • 短视频矩阵系统源码搭建指导
  • 网络安全概论——TCP/IP协议族的安全性
  • mybatis 的动态sql 和缓存
  • WPF实现曲线数据展示【案例:震动数据分析】
  • 【常微分方程讲义1.1】方程的种类发展与完备
  • 5G 模组 RG500Q常用AT命令
  • SpringMVC的使用
  • Vue 滚动条样式
  • einsum(爱因斯坦求和)
  • 瑞吉外卖项目学习笔记(二)Swagger、logback、表单校验和参数打印功能的实现
  • 提炼关键词的力量:AI驱动下的SEO优化策略
  • RAGFlow(3):VScode端口转发在在本机浏览(比内网穿透好用)
  • R语言处理XML文件
  • C语言:以数据块的形式读写文件
  • Docker 清理命令