在Android中实现富文本编辑器?

时间:2010-11-26 08:50:59

标签: android android-edittext richedit

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

7 个答案:

答案 0 :(得分:12)

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

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

enter image description here

答案 1 :(得分:4)

如果我需要进行足够大的更改,我可能会延长EditTextTableLayout,或至少最终使用他们的大部分source

答案 2 :(得分:3)

你能做到以下几点:

  1. 手动将EditText中的内容保存为您自己的模型(即通过将内容文档和视图属性分离并维护为单独的实体)。
  2. 覆盖渲染(或绘制方法)以对内容文档(模型的一部分)处理非文本字符(例如具有特定属性的项目符号)的部分内容进行自定义布局。
  3. 对我而言,如果你不得不考虑布局,你最好自己从头开始编写它。根据我的记忆,编辑文本(和richt文本编辑器)非常适合数据为纯文本的任何内容。

答案 3 :(得分:2)

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

这些问题也回答了问题:12

答案 4 :(得分:0)

答案 5 :(得分:-1)

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

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

答案 6 :(得分:-1)

检查此开源 Wordpress移动应用程序的android.It基于Edittext非常有前途的 Richtexteditor

您可以从here

下载来源

由于