在Android中实现富文本编辑器?

我想知道是否有任何好的select来实现Android中的富文本编辑器 。 请注意我正在讨论一个可以在Android应用程序中使用的富文本编辑器,而不是使用HTML和Javascriptembedded网页的编辑器。

我的要求是:

  • 基本格式(颜色,字体,高亮,粗体,斜体,下划线等)
  • 超链接
  • 内联图像
  • 项目符号列表和编号列表
  • 内联表格(只有单元格内的内容是可编辑的,而不是表格结构)

正如你所看到的,这和Windows上典型的RichEdit控件非常相似。

以下是我迄今为止所做的一些努力(调查和原型)

使用WebView

我曾尝试使用WebView控件加载一个HTML片段。 内容变得可编辑,因为它是HTML,我想它可以满足我的大部分要求。 但是它有几个问题:

  • (致命)没有文字符号。 用户将不知道他/她的input字符将被插入到哪里。
  • 屏幕上的软键盘在默认情况下是不可见的。 有一个技巧,用户必须长按菜单button来调出键盘。 但我认为这是一个非常糟糕的用户体验。 此外,屏幕布局不正确重新排列,文本插入点有时会被键盘覆盖。

使用EditText

我曾尝试使用EditText控件。 它似乎支持一定程度的富文本编辑(颜色,字体,粗体,斜体,下划线,内联图像,项目符号列表)。 但我仍然不知道如何实现以下要求:

  • 控制子弹符号(点,圆,短划线,箭头,星号等)
  • 编号列表(1.,2.,3.等)

顺便说一句,我已经看到有几个* span类,但我不知道他们是否可以得到任何帮助…而http://developer.android.com并没有提供有关他们的很多有用的信息。


那么,我怎样才能在Android上实现丰富的文本编辑器呢? 我可以扩展EditText并添加我的新function吗? 或者我应该从头开始做一些事情 – 扩展视图并自行实施一切? 对于后面的选项(扩展视图),我甚至不知道如何显示文本插入符号并眨眼,而不是提到用用户input移动插入符号。

我现在绝望…任何提示?

谢谢!

托尼


编辑

经过一些进一步的调查,看起来像扩展EditText将是我最好的select。 我以某种方式想出了如何使用Span类,并猜测我应该能够使用(扩展)它们来完成大部分的技巧。

例如,扩展BulletSpan和重写drawLeadingMargin应该让我控制子弹的附属。 延长LeadingMarginSpan应该帮助我在编号列表。

至于表格,我最初的计划是扩展LineBackgroundSpan并在drawBackground覆盖中绘制所有的表格边界。 但是,我仍然需要弄清楚如何布置表格单元格中的所有文本,并妥善处理脱字符号的移动和select。 build议?

我刚刚在Apache 2.0许可下发布了我的富文本编辑器组件:

https://github.com/1gravity/Android-RTEditor

在这里输入图像描述

我可能会扩展EditTextTableLayout或者如果我需要做大的改变,至less会使用大部分源代码 。

有一个名为android-richtexteditor的开源EditText富文本编辑器,但是代码在r5中被莫名地删除了。 代码仍然在r4 ; 只需使用svn来检出r4或更早版本即可访问它。 该代码似乎支持斜体,下划线,颜色select器,文本大小,等等。

还回答了这些问题: 1,2

你能做到以下几点:

  1. 手动将EditText中的内容作为自己的模型(即通过分离和维护内容文档和视图属性作为单独的实体)。
  2. 重写渲染(或绘制方法),以处理非文本字符(如具有特定属性的项目符号)的内容文档(模型的一部分)部分的自定义布局。

对我来说,如果你不得不布置布局,你最好从头开始自己写。 从我记得的编辑文本(和richt文本编辑器)是伟大的任何地方,你的数据是纯文本。

从EditText延伸是您的最佳select,它支持CharacterSpan和ParagraphSpan。

在Google Play上查看我的应用: https : //play.google.com/store/apps/details?id = com.hly.notes

检查这个开放源码的 WordPress移动应用程序的android.It具有非常有前途的基于Edittext的Richtexteditor。

你可以从这里下载源代码

谢谢