我正在尝试使用 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前两次用红色显示“red”,第二次用绿色显示“green”,第二次样式丢失,都是默认的灰色。
最佳答案
尝试替换 green.setSpan(styleGreen, 0, green.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
中的 styleGreen
;使用 new TextAppearanceSpan(getBaseContext(), R.style.Green)
关于android - SpannableStringBuilder 不保留文本中设置的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41837533/