我有两个spannable
对象用于相同的字符串,两者都有不同的样式。我需要合并所有spannable
个对象,并将所有样式显示为TextView
。
从Html.fromHtml()
返回,第二次返回StyleSpan(Bold)。
我尝试了TextUtils.concate(htmlSpan, boldSpan)
,但它显示了两次相同的字符串,因为它附加了spannable
,我希望将所有样式显示为单个字符串。
答案 0 :(得分:0)
使用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。我认为你不能在一个字符串上合并不同的spannable对象。我相信解决方法是应用一个跨度,然后转换为字符串然后应用第二个跨度。这样它将两个跨度应用于一个字符串。或者,如果您总是需要粗体
,则可以通过xml管理粗体文本类型答案 1 :(得分:0)
最后我发现我的解决方案,Html.fromHtml()没有spannable类型参数,所以首先我从Html.fromHtml()获得SpannableStringBuilder并将其转换为创建Bold StyleSpannable方法然后设置为TextView,它工作得很棒。
它将HTML可扩展为粗体StyleSpannable方法。
感谢大家的反馈和回复。
SpannableStringBuilder spannable = setTextViewHTML(content);
common.convertBoldString(spannable);
textView.setText(spannable);
对于上面的代码,内容是一个变量,其中包含我喜欢加粗的单词,它还包含HTML标记。
convertBoldString
是我的Common方法类中的方法,它有参数
SpannableStringBuilder
此对象用于设置粗体StyleSpan。