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

我的要求是:

基本格式(颜色,字体,突出显示,粗体,斜体,下划线等)

超连结

内联图像

项目符号列表和编号列表

内联表(仅单元格内的内容可编辑,表结构不可编辑)

如您所见,这几乎类似于Windows上的典型RichEdit控件。

到目前为止,我已经做了一些努力(调查和原型设计):

使用WebView

我尝试使用WebView控件加载带有HTML片段的HTML片段。 内容变成可编辑的,因为它是HTML,所以我想它可以满足我的大多数要求。 但这有几个问题:

(致命)没有文字插入符号。 用户将不知道他/她键入的字符将插入哪里。

默认情况下,屏幕上的软键盘不可见。 用户必须长按菜单按钮才能调出键盘,这是一个技巧。 但是我认为这是非常糟糕的用户体验。 此外,屏幕布局没有正确地重新布置,并且文本插入点有时会被键盘覆盖。

使用EditText

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

控制项目符号的外观(点,圆,破折号,箭头,星号等)

编号列表(1,。,2、3等)

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

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

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

谢谢!

-托尼

(编辑)

经过进一步调查,似乎扩展EditText将是我最好的选择。 我以某种方式弄清楚了如何使用那些Span类,并猜想我应该能够通过使用(扩展)它们来完成大多数技巧。

例如,扩展BulletSpan并覆盖drawLeadingMargin应该可以控制子弹外观。 扩展LeadingMarginSpan应该可以帮助我在编号列表上。

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐