如何将SpannableString与String互换而不会丢失它标记的属性?

时间:2018-03-12 15:03:40

标签: android spannablestring

如果我有以下字符串:

String string = “My string”

然后我可以使用SpanString改变它的颜色背景:

SpannableString spannableString = new SpannableString(string);
BackgroundColorSpan backgroundSpan = new BackgroundColorSpan(Color.RED);
spannableString.setSpan(backgroundSpan, 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

然后,如果我做

Toast(context , spannableString , Toast.LENGHT_SHORT).show();

它会显示一个toast“My string”,背景变为红色。

但是,如何在不使用SpannableString类型的情况下显示相同的字符串? 我的意思是Toast(context,[toString] spannableString,Toast.LENGHT_SHORT).show();

[toString]:我的笔记

PS:我已经尝试了

Toast.makeText(context, Html.fromHtml(spannableString.toString()), Toast.LENGTH_SHORT).show();

Toast.makeText(context, spannableString.toString(), Toast.LENGTH_SHORT).show();

因为我需要将其归结为:

entity.setAttribute([toString]Spannable);

但没有显示共同文字。

1 个答案:

答案 0 :(得分:1)

没有使用Spannables是没办法的。 Spannables是您在Android中向文本添加格式数据的方式。即使你的fromHTML黑客也将html变成了一个跨越式的。

正确的做法是使用你需要使用的任何API,这需要一个字符串,而不是使用CharSequence。