gpt4 book ai didi

android - 如何清除 Spannable Text 的格式,包括最后一个字符?

转载 作者:太空狗 更新时间:2023-10-29 15:46:44 24 4
gpt4 key购买 nike

我正在使用此代码从头到尾删除可跨越文本的格式。问题是它运行成功,但文本中的最后一个字符仍然是粗体(或斜体/下划线)。

removeSpan 不适用于文本中的最后一个字符:

int startSelection = 0;
int endSelection = text.length();
if(startSelection > endSelection) {
startSelection = text.getSelectionEnd();
endSelection = text.getSelectionStart();
}

Spannable str = text.getText();
StyleSpan[] ss = str.getSpans(startSelection, endSelection, StyleSpan.class);
for (int i = 0; i < ss.length; i++) {
if (ss[i].getStyle() == android.graphics.Typeface.BOLD) {
str.removeSpan(ss[i]);
}
if (ss[i].getStyle() == android.graphics.Typeface.ITALIC) {
str.removeSpan(ss[i]);
}
}

UnderlineSpan[] ulSpan = str.getSpans(startSelection, endSelection, UnderlineSpan.class);
for (int i = 0; i < ulSpan.length; i++) {
str.removeSpan(ulSpan[i]);
}

str.removeSpan(ss[1]);

text.setText(str);

最佳答案

如果您想从文本中删除所有 跨度,请使用:

Spannable str = text.getText();    
Object spansToRemove[] = str.getSpans(startSelection, endSelection, Object.class);
for(Object span: spansToRemove){
if(span instanceof CharacterStyle)
spannable.removeSpan(span);
}

关于android - 如何清除 Spannable Text 的格式,包括最后一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19809665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com