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

Ton*_*ues 55 android richedit android-edittext

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

Ema*_*lin 12

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

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

在此输入图像描述

  • 隐藏在从布局中移除。您不需要使用任何包含的布局(rte_toolbar、rte_toolbar_character 或 rte_toolbar_paragraph)。只需将其复制到您的应用程序,删除您想要删除的任何内容并在您的布局中使用它。三个包含的布局只是演示布局,您可以使用任何您想要的布局。也不需要 fork 应用程序,使用 gradle 依赖和您选择的布局。 (2认同)

小智 3

您可以执行以下操作吗:

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

在我看来,如果您必须对布局进行修改,那么您最好自己从头开始编写它。据我所知,编辑文本(和富文本编辑器)非常适合任何数据为纯文本的情况。