您好,我在textview中设置了一些文本。
TextView tweet = (TextView) vi.findViewById(R.id.text);
tweet.setText(Html.fromHtml(sb.toString()));
然后,我需要将
TextView
的文本转换为Spannble
。所以我这样做是这样的:Spannable s = (Spannable) tweet.getText();
我需要将其转换为
Spannable
,因为我已将TextView
传递给了一个函数: private void stripUnderlines(TextView textView) {
Spannable s = (Spannable) textView.getText();
URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
for (URLSpan span : spans) {
int start = s.getSpanStart(span);
int end = s.getSpanEnd(span);
s.removeSpan(span);
span = new URLSpanNoUnderline(span.getURL());
s.setSpan(span, start, end, 0);
}
textView.setText(s);
}
private class URLSpanNoUnderline extends URLSpan {
public URLSpanNoUnderline(String url) {
super(url);
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
这表明没有错误/警告。但是抛出运行时错误:
java.lang.ClassCastException: android.text.SpannedString cannot be cast to android.text.Spannable
如何将textview的SpannedStringt/text转换为Spannble?还是可以使用函数内的SpannedString来执行相同的任务?
最佳答案
new SpannableString(textView.getText())
应该可以工作。
抱歉,但是removeSpan()
和setSpan()
是Spannable
接口(interface)上的方法,而SpannedString
没有实现Spannable
。