我有两个spannable
相同字符串的对象,并且都有不同的样式。我需要合并所有spannable
对象并将所有样式显示到TextView
.
从返回之一Html.fromHtml()
和第二个返回 StyleSpan(Bold)。
我试过TextUtils.concate(htmlSpan, boldSpan)
但它显示了两次相同的字符串,因为它附加了spannable
,我想将我的所有样式显示为单个字符串。
我有两个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
为您的视图
textView.setText(sb);
编辑:
我看到了你编辑的问题,上面我重写了这段代码,让它在一个字符串上应用两个 spannables。我认为您不能在一个字符串上合并不同的可跨对象。我相信一种解决方法是应用一个跨度,然后转换为字符串,然后应用第二个跨度。这样,它将对一个字符串应用两个跨度。或者,如果您总是需要粗体,您可以通过 xml 管理粗体文本类型
最后我找到了我的解决方案,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。