我实际上要做的是,我在存储一个 SpannableString
形同 HTML
但它有 BackgroundColorSpan
它的颜色中有一个plha通道。现在我知道了(通过试验),我的颜色的apha通道消失了(由于无法使用的 HTML
)从文本中提取出来,每当我试图存储它的时候。
现在我想知道的是,有没有一种方法可以提取所有的 BackgroundColorSpan
中的实例。SpannableString
并改变其颜色属性?所有的 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);
没关系,我有答案了 此处
我所要做的就是删除当前的跨度,然后将其替换为一个新的跨度。BackgroundColorSpan
的颜色。这是代码片段。
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 items color
// get the span range
int start = spannableDescString.getSpanStart(item);
int end = spannableDescString.getSpanEnd(item);
// remove the undesired span
spannableDescString.removeSpan(item);
// set the new span with desired color
spannableDescString.setSpan(new BackgroundColorSpan(Color.RED),start,end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
desc.setText(spannableDescString);
我只是不知道是否能找到各个跨度的起始和结束。