在Android中实现富文本编辑器?
我想知道是否有任何好的select来实现Android中的富文本编辑器 。 请注意我正在讨论一个可以在Android应用程序中使用的富文本编辑器,而不是使用HTML和Javascriptembedded网页的编辑器。
我的要求是:
- 基本格式(颜色,字体,高亮,粗体,斜体,下划线等)
- 超链接
- 内联图像
- 项目符号列表和编号列表
- 内联表格(只有单元格内的内容是可编辑的,而不是表格结构)
正如你所看到的,这和Windows上典型的RichEdit控件非常相似。
以下是我迄今为止所做的一些努力(调查和原型)
使用WebView
我曾尝试使用WebView控件加载一个HTML片段。 内容变得可编辑,因为它是HTML,我想它可以满足我的大部分要求。 但是它有几个问题:
- (致命)没有文字符号。 用户将不知道他/她的input字符将被插入到哪里。
- 屏幕上的软键盘在默认情况下是不可见的。 有一个技巧,用户必须长按菜单button来调出键盘。 但我认为这是一个非常糟糕的用户体验。 此外,屏幕布局不正确重新排列,文本插入点有时会被键盘覆盖。
使用EditText
我曾尝试使用EditText控件。 它似乎支持一定程度的富文本编辑(颜色,字体,粗体,斜体,下划线,内联图像,项目符号列表)。 但我仍然不知道如何实现以下要求:
- 控制子弹符号(点,圆,短划线,箭头,星号等)
- 编号列表(1.,2.,3.等)
- 表
顺便说一句,我已经看到有几个* span类,但我不知道他们是否可以得到任何帮助…而http://developer.android.com并没有提供有关他们的很多有用的信息。
那么,我怎样才能在Android上实现丰富的文本编辑器呢? 我可以扩展EditText并添加我的新function吗? 或者我应该从头开始做一些事情 – 扩展视图并自行实施一切? 对于后面的选项(扩展视图),我甚至不知道如何显示文本插入符号并眨眼,而不是提到用用户input移动插入符号。
我现在绝望…任何提示?
谢谢!
托尼
( 编辑 )
经过一些进一步的调查,看起来像扩展EditText将是我最好的select。 我以某种方式想出了如何使用Span类,并猜测我应该能够使用(扩展)它们来完成大部分的技巧。
例如,扩展BulletSpan和重写drawLeadingMargin应该让我控制子弹的附属。 延长LeadingMarginSpan应该帮助我在编号列表。
至于表格,我最初的计划是扩展LineBackgroundSpan并在drawBackground覆盖中绘制所有的表格边界。 但是,我仍然需要弄清楚如何布置表格单元格中的所有文本,并妥善处理脱字符号的移动和select。 build议?
我刚刚在Apache 2.0许可下发布了我的富文本编辑器组件:
我可能会扩展EditText
和TableLayout
或者如果我需要做大的改变,至less会使用大部分源代码 。
有一个名为android-richtexteditor的开源EditText富文本编辑器,但是代码在r5中被莫名地删除了。 代码仍然在r4 ; 只需使用svn来检出r4或更早版本即可访问它。 该代码似乎支持斜体,下划线,颜色select器,文本大小,等等。
还回答了这些问题: 1,2
你能做到以下几点:
- 手动将EditText中的内容作为自己的模型(即通过分离和维护内容文档和视图属性作为单独的实体)。
- 重写渲染(或绘制方法),以处理非文本字符(如具有特定属性的项目符号)的内容文档(模型的一部分)部分的自定义布局。
对我来说,如果你不得不布置布局,你最好从头开始自己写。 从我记得的编辑文本(和richt文本编辑器)是伟大的任何地方,你的数据是纯文本。
从EditText延伸是您的最佳select,它支持CharacterSpan和ParagraphSpan。
在Google Play上查看我的应用: https : //play.google.com/store/apps/details?id = com.hly.notes
检查这个开放源码的 WordPress移动应用程序的android.It具有非常有前途的基于Edittext的Richtexteditor。
你可以从这里下载源代码
谢谢