android - SpannableString.setSpan 不起作用?

标签 android spannablestring spannable

我正在尝试为

设置不同的颜色
            str.append(" ").append(isBlue ? "b" : "p");
            SpannableString spannable = new SpannableString(str);
            spannable.setSpan(new ForegroundColorSpan(isBlue ? R.color.blue: R.color.pink),
                    spannable.length() - 1,
                    spannable.length(),
                    Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
            miscTextView.setText(spannable);

strStringBuilder 的实例。 如果 isBlue 为 true,我希望 miscTextView 的最后一个字符为蓝色,否则为粉红色,而其余文本保持黑色。
但事实证明,无论哪种情况,最后一个字符都是灰色的,这真的让我很困惑。 我做错了什么?

编辑:我已经检查了颜色资源 xml。Intellij 在 xml 代码行左侧显示颜色。

最佳答案

您正在使用返回idR.color.blue。您应该按如下方式获取颜色:

getResources().getColor(R.color.blue)

所以将会是:

spannable.setSpan(new ForegroundColorSpan(isBlue ? getResources().getColor(R.color.blue): getResources().getColor(R.color.pink)),
                    spannable.length() - 1,
                    spannable.length(),
                    Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

之所以是灰色,是因为R.color.blue的值(id值)可能是与灰色对应的整数。

关于android - SpannableString.setSpan 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20113653/

相关文章:

android - 无法在 Activity 中全屏显示日期选择器

android - 在 SpannableStringBuilder 中对齐位图

Android Spannabe 表情符号在 GridView 和 TextView 中加载缓慢

java - 从 Google Play 商店下载 Google Map V2 时显示黑屏

android - 如何解决 android-studio 中的 'Manifest merger failed' 错误?

android - 从 SpannableStringBuilder 获取 SpannableString 的最佳方法

android - 在 spannable 中分隔字符

android - Android Span 上下文中的标记对象是什么?

android - 在android TextView中缩进项目符号行

android - Cordova 构建命令在命令提示符下失败。在根项目 'cdvBuildDebug' 中找不到任务 'android'