2

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

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

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

4

2 回答 2

2

使用,但您可以在方法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为您的视图

textView.setText(sb);

编辑

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

于 2018-03-20T07:54:23.290 回答
0

最后我找到了我的解决方案,Html.fromHtml() 没有 spannable 类型参数,所以首先我从 Html.fromHtml() 得到 SpannableStringBuilder 并将其发扬到 create Bold StyleSpannable 方法中,然后设置到 TextView 中,效果很好。

它保留 HTML spannable 为粗体 StyleSpannable 方法。

感谢大家对我的回答的反馈和回复。

SpannableStringBuilder spannable = setTextViewHTML(content);
common.convertBoldString(spannable);

textView.setText(spannable);

对于上面的代码内容是一个变量,它包含我喜欢加粗的单词,它还包含 HTML 标签。

convertBoldString是我的通用方法类中的方法,它有参数 SpannableStringBuilder,这个对象用于设置粗体 StyleSpan。

于 2018-03-20T10:15:48.570 回答