我想知道在 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 覆盖中绘制所有表格边框。但是,我仍然需要弄清楚如何布局表格单元格中的所有文本并正确处理插入符号的移动和选择。建议?