文本视图中的富文本

Posted

技术标签:

【中文标题】文本视图中的富文本【英文标题】:Rich text in a textview 【发布时间】:2012-11-01 06:49:09 【问题描述】:

我需要为我的程序创建一个“信息”。我想用几种颜色、样式、字体等填充信息文本。

我找到了this link 的实现方法。

还有其他方法(更好或更简单)吗?

【问题讨论】:

【参考方案1】:

在阅读了您的问题标题后,我准备为您提供指向该文章的链接。我发现使用 spans 和 SpannableString 非常强大。另一种方法是为您的文本使用 html 格式,这可以通过 Html.fromHtml() 完成。

但是,目前尚不清楚支持哪些 HTML 标记,因为文档中的内容只是:

该类将 HTML 字符串处理为可显示的样式文本。不是 支持所有 HTML 标签。

所以,对于一个好的解决方案,我肯定会使用文章中的SpannableString 方法。这种方法在实践中非常方便,因为您还可以创建自己的 span 类来扩展现有的类(例如,如果您想让一段文本使用未内置的自定义字体)。

【讨论】:

不错的答案,SpannableString 是非常强大的工具。我受到该类的启发,创建了一个 RichTextView 库,该库在后台使用 SpannableString 并简化了开发人员的使用:***.com/a/36404986/3131147【参考方案2】:

我在周末写了一个库来处理这个问题,我称之为RichTextView。

该库允许您格式化一段文本(使其变为粗体、下划线、斜体、组合等)以及为其着色(文本颜色和突出显示)。在下一个版本中,我计划允许自定义字体跨度等。

使用起来很简单,只需在你的 gradle 文件中添加以下依赖即可:

compile 'com.androidessence.lib:richtextview:1.0.1'

现在,假设您要将前四个字符加粗,您可以简单地进行以下调用:

myRichTextView.formatSpan(0, 4, RichTextView.FormatType.BOLD);

请注意,结束索引参数不包含在内,因此通过说 (0 -> 4) 我们实际上是在加粗索引 (0 -> 3)。

如果您想同时使用粗体和下划线,请使用 EnumSet:

myRichTextView.formatSpan(0, 4, EnumSet.of(RichTextView.FormatType.BOLD, RichTextView.FormatType.UNDERLINE));

有关最新信息,请参阅上面链接的 Github 存储库,但我会在此答案过时时尝试更新此答案。

【讨论】:

很棒的库,比其他解决方案更易于使用。 我对这个库感到非常兴奋!我用的不多我不自己写,但这似乎是一个明显的工具箱项目,tyvm Adam!【参考方案3】:

当我过去需要格式化文本时,我创建了一个带有格式化的 html 文件,将其保存在 res/raw 目录中并将其加载到 WebView 中。我以前从未尝试过使用不同的字体,但不确定这是否可行,但粗体和斜体等都可以。

【讨论】:

【参考方案4】:

科特林

如果你不需要很复杂的样式,你可以使用这种原生方式:

val newText = buildSpannedString 
        bold  append("Hello ") 
        underline  append("World. ") 
        italic  append("2021 ") 
        append("Author: Caner")
    

【讨论】:

以上是关于文本视图中的富文本的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的富文本编辑

深入理解javascript中的富文本编辑

如何在 C# 的富文本框中将文本添加到用户光标的位置?

Flux Form 中的富文本编辑器

富文本文件在 Win10 和 Win7 中的富文本框中显示不同

Access 2010 中有限长度文本字段的富文本输入