我有两个用于同一字符串的 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/