我正在尝试使用SpannableStringBuilder来构建一个包含不同样式的文本。但是在追加更多的字符串后,样式就会丢失。
public SpannableStringBuilder buildMixStyleText() {
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
TextAppearanceSpan styleRed = new TextAppearanceSpan(getBaseContext(), R.style.Red);
TextAppearanceSpan styleGreen = new TextAppearanceSpan(getBaseContext(), R.style.Green);
for (int i = 0; i < 10; i++) {
SpannableString red = new SpannableString("red");
red.setSpan(styleRed, 0, red.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.append(red);
spannableStringBuilder.append("\n");
SpannableString green = new SpannableString("green");
green.setSpan(styleGreen, 0, green.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.append(green);
spannableStringBuilder.append("\n");
}
return spannableStringBuilder;
}Textview在前两次以红色显示“红色”,在下一次样式丢失时以绿色显示“绿色”,它们都是灰色的默认颜色。
我尝试过跨界面的不同选项,比如SPAN_INCLUSIVE_EXCLUSIVE,但它似乎不起作用。

发布于 2018-04-25 11:11:33
请尝试将% green.setSpan(styleGreen, 0, green.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);中的styleGreen替换为new TextAppearanceSpan(getBaseContext(), R.style.Green)
https://stackoverflow.com/questions/41837533
复制相似问题