android - SpannableStringBuilder 不保留文本中设置的样式

标签 android textview spannablestring spannable spannablestringbuilder

我正在尝试使用 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”,第二次样式丢失,都是默认的灰色。

我玩过 SPAN_INCLUSIVE_EXCLUSIVE 等 Spanned 界面中的不同选项,但它似乎不起作用。 enter image description here

最佳答案

尝试替换 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/

相关文章:

Android SpannableString 在部分文本后面设置背景

即使安装并启用了 Hyper-V,Visual Studio 中的 Android 模拟器也无法启动

android - ConstraintLayout 的问题 - 垂直边距不起作用

java - Android:对 JSON 进行排序

java - TextView 中不区分大小写的突出显示

android - 使用可跨越字符串更改阿拉伯语变音符号颜色在某些手机上不起作用

java - TextView 中的 Roboto 浅色和 Roboto 粗体

java - Android 错误 : Unable to resume activity.。?

android - 更改 DatePicker 标题文本颜色

java - 我试图在 TextToSpeech 运行时更改 textView 的背景,这可能吗?