繁体   English   中英

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

[英]Implementing a rich text editor in Android?

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

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

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

在此处输入图片说明

如果需要进行足够大的更改,我可能会同时扩展EditTextTableLayout或者至少最终使用它们的大部分源代码

您可以执行以下操作:

  1. 手动将内容作为自己的模型保存在EditText中(即,通过将内容文档和视图属性分离和维护为单独的实体)。
  2. 覆盖渲染(或draw方法)以在内容文档的某些部分(模型的一部分)上处理非文本字符(例如具有特定属性的项目符号)以进行自定义布局。

在我看来,如果您不得不考虑布局问题,那么最好还是自己重新编写。 从我记得的情况来看,“编辑”文本(和Richt文本编辑器)非常适合任何您将数据作为纯文本的情况。

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

还回答了这些问题: 12

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

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

检查android.It这个开源 WordPress的移动应用程序具有基于EDITTEXT非常有前途的使用RichTextEditor。

您可以从此处下载源代码

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM