android - 我如何合并单个字符串的两个不同的可跨越对象

标签 android html spannablestring spannable spannablestringbuilder

我有两个用于同一字符串的 spannable 对象,并且两者都有不同的样式。我需要合并所有 spannable 对象并将所有样式显示到 TextView 中。

Html.fromHtml() 返回之一和第二个返回 StyleSpan(Bold)。

我尝试了TextUtils.concate(htmlSpan,boldSpan),但它显示了相同的字符串两次,因为它附加了spannable,我想将我的所有样式显示为单个字符串。

最佳答案

使用SpannableStringBuilder,但您可以在append方法内创建跨度

SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(String.valueOf(Html.fromHtml(stringToConvert));
sb.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

然后只需将 sb 设置为您的 View

textView.setText(sb);

编辑:

我看到了您编辑的问题,上面我重写了这段代码以使其在一个字符串上应用两个spannable。我认为你不能将不同的可跨越对象合并到一个字符串上。我相信一种解决方法是应用一个跨度,然后转换为字符串,然后应用第二个跨度。这样,它将把两个跨度应用于一个字符串。或者,如果您始终需要粗体文本,则可以通过 xml 管理粗体文本类型

关于android - 我如何合并单个字符串的两个不同的可跨越对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49378448/

相关文章:

html - 覆盖 HTTP 服务器的 MIME 类型?

jquery - 以 HTML 格式生成 PDF 文件的缩略图

android - ListView 中的 SpannableString 正则表达式

Android 编辑文本 : how to apply spans when composing?

android - 无法从 build.gradle 中删除依赖项? (断言 pluginDirectory.exists())

android - android 中的 MediaRecorder.pause()

Android - 离线、非矢量、自定义 map

html - 让兄弟用完动态宽度元素的宽度

android - 检测带有 @ 或 # 的单词并将 onClick 事件传递给它

android - 如何在选项菜单中设置图标大小?