有什么方法可以更改SpannableString中已应用的BackgroundColorSpan的颜色吗?

时间:2020-05-04 08:29:46

标签: android background textview android-spannable

我实际上是在以SpannableString的形式存储HTML,但是它有一个BackgroundColorSpan,它的颜色带有aplha通道。现在,我(通过试验)知道,每次尝试存储颜色时,我的颜色aplha通道(由于HTML无法使用)都会从文本中消失。

现在我想知道的是,有一种方法可以提取BackgroundColorSpan中的所有SpannableString实例并更改其color属性吗?所有BackgroundColorSpan实例的颜色都是相同的,我只想在向用户展示文本之前向其颜色添加Alpha通道(通过更改其颜色)。

我想出了一种使用BackgroundColorSpan提取所有getSpans实例的方法,但仍然找不到改变其颜色的方法。

以下是相关代码:

SpannableString spannableDescString = new SpannableString(trimTrailingWhitespace(Html.fromHtml(note.getDesc())));
BackgroundColorSpan[] highlightSpanArray = spannableDescString.getSpans(0,spannableDescString.length(),BackgroundColorSpan.class);

if(highlightSpanArray.length!=0){
    for(BackgroundColorSpan item : highlightSpanArray){
        //what should I put here to change every item's color
    }
}

desc.setText(spannableDescString);

1 个答案:

答案 0 :(得分:0)

没关系,我得到了答案https://github.com/explosion/spaCy/pull/5238

我要做的就是删除当前范围并将其替换为我需要的颜色的google-services.json。这是代码段。

BackgroundColorSpan

我只是不知道是否可以找到各个跨度的开始和结束。