59

我想知道在 Android中实现富文本编辑器是否有任何好的选择。请注意,我说的是可以在 Android 应用程序中使用的富文本编辑器,而不是使用 HTML 和 Javascript 嵌入到网页中的编辑器。

我的要求是:

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

如您所见,这与 Windows 上的典型 RichEdit 控件非常相似。

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

使用 Web 视图

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

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

使用编辑文本

我试过使用 EditText 控件。它似乎支持某种程度的富文本编辑(颜色、字体、粗体、斜体、下划线、内嵌图像、项目符号列表)。但我仍然无法弄清楚如何实现以下要求:

  • 控制项目符号符号的外观(点、圆、破折号、箭头、星号等)
  • 编号列表(1.、2.、3. 等)
  • 桌子

顺便说一句,我已经看到有几个 *Span 类,但我不确定它们是否有任何帮助......而且http://developer.android.com并没有提供太多有用的信息。


那么,究竟如何在 Android 上实现富文本编辑器呢?我可以扩展 EditText 并添加我的新功能吗?还是我应该从头开始做一些事情 - 扩展视图并自己实现一切?对于以后的选项(扩展视图),我实际上什至不知道如何显示文本插入符号并使其闪烁,更不用说通过用户键入来移动插入符号。

我现在很绝望……有什么提示吗?

谢谢!

-托尼


编辑

经过进一步调查,看起来扩展 EditText 将是我最好的选择。我不知何故想出了如何使用这些 Span 类,并猜测我应该能够通过使用(扩展)它们来完成大部分技巧。

例如,扩展 BulletSpan 并覆盖 drawLeadingMargin 应该让我控制项目符号的外观。扩展LeadingMarginSpan 应该可以帮助我在编号列表中。

至于表格,我最初的计划是扩展 LineBackgroundSpan 并在 drawBackground 覆盖中绘制所有表格边框。但是,我仍然需要弄清楚如何布局表格单元格中的所有文本并正确处理插入符号的移动和选择。建议?

4

7 回答 7

14

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

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

在此处输入图像描述

于 2015-06-02T18:53:24.773 回答
4

如果我需要进行足够大的更改,我可能会同时扩展它们EditTextTableLayout或者至少最终使用它们的大部分源代码。

于 2011-01-15T06:30:35.243 回答
3

你能做到以下几点:

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

对我来说,如果你不得不对布局感到困惑,你最好自己从头开始编写它。据我所知,编辑文本(和富文本编辑器)非常适合数据为纯文本的任何内容。

于 2011-01-15T00:09:12.843 回答
2

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

还回答了以下问题1、2

于 2011-12-15T22:19:38.073 回答
-1

从 EditText 扩展是您的最佳选择,它支持 CharacterSpan 和 ParagraphSpan。

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

于 2012-05-28T03:20:47.313 回答
-1

检查这个开源的 android 的 Wordpress 移动应用程序。它有非常有前途的基于 Edittext 的 Richtexteditor

你可以从这里下载源代码

谢谢

于 2013-09-09T08:56:39.033 回答