富文本可以为用户提供更加多样化的文本展示形式,但由于其使用了H5标签的特殊性,一般都需要第三方框架的支持。这里推荐一款合适的第三方富文本框架,richeditor。

首先我们要使用该功能需要引入相关jar包,引入方法如下

compile 'jp.wasabeef:richeditor-android:1.2.0'

然后我们需要解决一个问题,那就是,在富文本编辑器的使用中,5.0以下的系统自带的webview无法实现删除图片的功能。这个漏洞在5.0以后被谷歌公司进行了修复。但是问题来了,公司的软件是要兼容到4.2系统的,总不能因为这个问题不让用户用4.x的手机吧,而且这批用户还不少,所以需要解决这个问题。我们的思路是替换掉系统的webview,更换第三方自定义webview。这里有一个好的框架推荐就是腾讯的X5内核,内含腾讯重写的Webview,版本到7.0。这里不重点讲述X5内核的好处,我们看一下如何替换。我们看到,RichEditor中最关键的一个自定义类是一个叫做RichEditor的类。这是我们布局上输入富文本区域的控件。我们看到它的继承类是WebView。这里咱们把代码拷贝出来并且重写该类,并将继承类换成X5内核中的WebView,如下样式:

public class XRichEditor extends com.tencent.smtt.sdk.WebView

这样我们就可以在这个类中进行其他的一些修改,比如新功能的添加之类的,下面举两个实用的小例子

例子1:

这个富文本没有添加分割线的方法,我们为它加一个。在重写的XRichEditor中,就是集成了X5内核的富文本中,我们写入如下代码

public void setSplitt() {

exec("javascript:RE.insertHTML('


');");

}

这样我们就添加了一个加入分割线的方法。其实细心的朋友已经发现insertHTML就是在光标处插入html代码的方法,方便我们在光标的停留位置插入代码。

例子2:

我们还可以让网页的内容响应我们的点击事件

public void insertImg(String url, String alt){

String html = "
";

exec("javascript:RE.insertHTML('"+html+"');");

Log.i("img",html);

}

这样,我们就可以让我们的图片响应通过WebView注入的接口,从而调用我们原生的方法。

另外,我们讲一下富文本编辑器的原理。

富文本编辑器其实就是一个加载在我们WebVIew上的一个网页,网页的源码是这样写的

可以看到,div被我们标记成了内容可以编辑的状态。

紧接着我们使用document.execCommand的相关方法在js文件中对HTML进行相关的操作。改套方法可以允许运行命令来操纵可编辑区域的内容。大多数命令影响文档的选择(粗体,斜体等),而其他命令插入新元素(添加链接)或影响整行(缩进)。当使用contentEditable时,调用 execCommand() 将影响当前活动的可编辑元素。

这样我们就可以愉快的使用富文本编辑器了。更多功能还要读者自己去探索。

By WaterWood

cef在android中使用_关于富文本在Android中的应用以及遇到的坑相关推荐

  1. edui 富文本编辑_React中使用UEditor百度富文本的方法

    前言 本文将介绍笔者在React的项目中使用百度的富文本编辑器Ueditor的过程.注意本文不提供一条龙式的使用方法,只是将使用过程中的一些实现思路进行总结,供以参考.react项目中导入uedito ...

  2. 使用UIWebView中html标签显示富文本

    使用UIWebView中html标签显示富文本 用UIWebView来渲染文本并期望达到富文本的效果开销很大哦! Work 本人此处直接加载自定义字体"新蒂小丸子体",源码不公开, ...

  3. vue中引入TinyMCE实现富文本编辑器

    整片文章是以vue2.X 引入tinymce富文本编译器 首先,先确认你的vue版本是 2 还是 3 ,查看项目的package.json中vue的版本,我的是2.5.2 一共两个步骤 vue工程中安 ...

  4. 图片 富文本 粘贴_用C++实现富文本控件(中): 撤销

    用C++实现富文本控件: 撤销 本节是关于撤销重做相关实现. 项目地址: Github-RichED 本文备份地址: github 撤销重做 这就被称为UNDO/REDO之类的, 简直是'增量'的代表 ...

  5. Android UI设计小知识——富文本

    富文本 什么是富文本? 可能大家要问了,富文本是什么?怎么是这个"富"来,好奇怪啊--第一次接触的时候我也不知道什么是富文本,但是后来老师给举了一个例子就明白了.都喜欢用QQ聊天, ...

  6. 富文本在TextView中显示图片

    最近在项目中有需求使用到了富文本,在android中我们设置TextView显示富文本,如果不涉及图片的话还是比较简单的 TextView tv = new TextView(this); Spann ...

  7. 知乎日报富文本处理android,有了这些app,工作效率啪啪啪

    原标题:有了这些app,工作效率啪啪啪 对于热衷于自我提升的职场工作者来说,手机是一个追求高效率的必备工具. 一个高效学习的人,手机里都应该装哪些APP呢? 录音软件 Recordium 参加活动,如 ...

  8. android webview 样式解析不正确,解决Android Webview加载Html富文本,h5字体样式不起作用问题...

    问题起因:WebView作为整个页面的一个部分展示,展示的是一段H5片段(Html中body标签中的部分) 问题描述:H5前端设置好的字体大小,在WebView中展示时不起作用,导致字体大小都一样 问 ...

  9. android 屏幕投射_将自定义内容从Android应用投射到电视(2020年方法)

    android 屏幕投射 If you're anything like me, who has never created a screen-cast app before and want to ...

最新文章

  1. [vijos1234]口袋的天空最小生成树
  2. 钱颖一:人工智能将使中国教育优势荡然无存
  3. 由浅入深CIL系列【目录索引】+ PostSharp AOP编程【目录索引】
  4. cadence原理图封装pin名称重复_原理图设计篇|单片机设计项目实例分享
  5. 03bash特性详解
  6. 4个小时实现一个HTML5音乐播放器
  7. Swagger注解传参
  8. CAD绘制填充并设置填充透明度
  9. PMSG永磁同步发电机并网仿真模型
  10. php怎么让浏览器崩溃,让IE6浏览器崩溃
  11. 【优化调度】基于粒子群算法求解水火电调度优化问题含Matlab源码
  12. Error:A JNI error has occurred,please check your installation and try again
  13. 设置海思芯片MMZ内存、OS内存详解
  14. JavaScript 的addEventListener() 事件监听详解!
  15. 推荐一款超级好用的AI模型训练平台——Tesra超算网络!
  16. 整理的一些建站中常见的问题与解决代码
  17. brpc源码学习(二)-bthread的创建与切换
  18. android中api简介
  19. Oracle官网下载旧版本jdk
  20. Burp suite 基本手动工具

热门文章

  1. nginx反向代理配置实例分享
  2. 走进Windows Server 2008服务器核心(Serve Core)
  3. Bootstrap静态cdn
  4. asc desc排序_21.数据库排序?左连接 ?右连接?
  5. python 图标题上移_Python-Matplotlib将图形标题移动到y轴
  6. appium和airtest_关于Airtest自动化测试工具
  7. [转载] public static void main(String[] args) 隐含了什么?
  8. 给定一个整数判断是否为素数_Ruby程序检查给定数字是否为素数
  9. Java Integer类numberOfLeadingZeros()方法的示例
  10. java 字节数组作用_这段java代码中字节数组b起到了什么作用?