我想知道在Android中实现富文本编辑器是否有任何好的选择。请注意我在谈论可以在Android应用程序中使用的富文本编辑器,而不是使用HTML和Javascript嵌入在网页中的编辑器。
我的要求是:
基本格式(颜色,字体,高亮,粗体,斜体,下划线等)
超链接
内嵌图像
子弹列表和编号列表
内联表(只有单元格内的内容是可编辑的,而不是表格结构)
正如您所看到的,这几乎与Windows上的典型RichEdit控件非常相似。
以下是我迄今为止所做的一些努力(调查和原型设计):
使用WebView
我已经尝试使用WebView控件加载一个HTML片段。内容变得可编辑,因为它是HTML,我想它可以满足我的大多数要求。但它有几个问题:
(致命的)没有文字插入符号。用户将不知道他/她键入的字符将插入何处。
默认情况下,屏幕上的软键盘不可见。有一个技巧,用户必须长按菜单按钮才能调出键盘。但我认为这是一个非常糟糕的用户体验。此外,屏幕布局没有正确重新排列,文本插入点有时会被键盘覆盖。
使用EditText
我尝试过使用EditText控件。它似乎支持某种程度的富文本编辑(颜色,字体,粗体,斜体,下划线,内嵌图像,项目符号列表)。但我仍然无法弄清楚如何实现以下要求:
控制子弹符号的外观(圆点,圆圈,短划线,箭头,星号等)
编号清单(1.,2.,3等)
表
顺便说一下,我已经看到有几个* Span类,但我不确定它们是否可以提供任何帮助......而http://developer.android.com并没有提供有关它们的有用信息。
那么,我怎么能在Android上实现富文本编辑器呢?
我可以扩展EditText并添加我的新功能吗?或者我应该从头做什么 - 扩展视图并自己实现所有内容?对于后来的选项(扩展视图),我实际上甚至不知道如何显示文本插入符并使其闪烁,而不是提及用户键入移动插入符号。
我现在很绝望......有什么提示吗?
谢谢!
托尼
(编辑)
经过一番进一步调查后,看起来扩展EditText将是我最好的选择。我以某种方式弄清楚如何使用这些Span类并猜测我应该能够通过使用(扩展)它们来完成大部分技巧。
例如,扩展BulletSpan并覆盖drawLeadingMargin可以让我控制子弹的外观。扩展LeadingMarginSpan应该在编号列表上帮助我。
至于表格,我的初步计划是扩展LineBackgroundSpan并在drawBackground覆盖中绘制所有表格边框。但是,我仍然需要弄清楚如何布置表格单元格中的所有文本并正确处理插入符号移动和选择。建议?