2

如果我问的是一个愚蠢的问题,请原谅我,但我想知道如何从我的文本视图中的文本中删除一个跨度。这就是我的 span 方法的样子。

public CharSequence setTextStyleItalic(CharSequence text) {
    StyleSpan style = new StyleSpan(Typeface.ITALIC);
    SpannableString str = new SpannableString(text);
    str.setSpan(style, 0, text.length(), 0);
    return str;
}

这就是我所说的。

tvTitle.setText(setTextStyleItalic(tvTitle.getText()));

我真的很想知道如何使用 removeSpan() 在java中删除这个斜体跨度。

4

3 回答 3

8

获取文本TextView并将其转换为SpannableString然后您可以使用该getSpans(int queryStart, int queryEnd, Class<T> kind)方法遍历这些跨度并删除它们

SpannableString ss=(SpannableString)txtView.getText();
ForegroundColorSpan[] spans=ss.getSpans(0, txtView.getText().length(), ForegroundColorSpan.class);
for(int i=0; i<spans.length; i++){
  ss.removeSpan(spans[i]);
}
于 2015-03-24T03:16:46.290 回答
1

首先使用 getSpans() 从您的跨度中获取文本

  removeTextSpan = tvTitle.getSpans(0, tvTitle.getText().length(),ForegroundColorSpan.class);
  for (int i = 0; i < removeTextSpan.length; i++) 
  tvTitle.removeSpan(removeTextSpan[i]);

我认为这会有所帮助

于 2013-08-02T06:11:25.310 回答
0

设置和删除斜体的跨度

 val spannable: Spannable = SpannableStringBuilder(editText.text)
 val start = editText.selectionStart
 val end = editText.selectionEnd

 val allSpans: Array<StyleSpan> = spannable.getSpans(0,
                spannable.length, StyleSpan::class.java)

         if (doItalic) {
               spannable.setSpan(
                   StyleSpan(ITALIC), start, end,
                   Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
                  )
             } else {
                 for (span in allSpans) {
                     if (span.style == ITALIC)
                        spannable.removeSpan(span)
                    }
                }
 editText.setText(spannable)
于 2021-08-02T13:30:36.953 回答