【发布时间】:2010-11-26 08:50: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 覆盖中绘制所有表格边框。但是,我仍然需要弄清楚如何布局表格单元格中的所有文本并正确处理插入符号的移动和选择。有什么建议吗?
【问题讨论】:
-
我会以 commonsguy 的 Edit-A-Rama 演示作为起点。它利用了他自己的 github repo 中的另一个组件 - RichEditText。
-
查看我刚刚上传的new library,希望对您有所帮助!
-
如何将一些 html 格式的数据添加到这个 Richeditor 视图中,我想如何编辑相同的日期
标签: android android-edittext richedit