请问一下,我按照你这种写法,然后调用了为什么没有效果呢?下划线还是有
private class URLSpanNoUnderline extends URLSpan {
public URLSpanNoUnderline(String url) {
super(url);
}
@Override public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
private void stripUnderlines(TextView textView) {
if(null!=textView&&textView.getText() instanceof Spannable){
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.setAutoLinkMask(0);//已经解决,添加这一句就好了
textView.setText(s);
}
}
//最后一行调用
private void zero() {
// 单独设置点击事件
ClickableSpan clickableSpanOne = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(Lingwulingyi.this, "点击了《用户协议和手册》", Toast.LENGTH_SHORT).show();
}
};
ClickableSpan clickableSpanTwo = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(Lingwulingyi.this, "点击了《网络使用协议》", Toast.LENGTH_SHORT).show();
}
};
String content="请熟悉并阅读《用户协议和手册》相关内容阿《网络使用协议》斯顿发水立方举案说法阿萨德发送到打多少";
SpannableString spannableString = new SpannableString(content);
// spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")),
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#00FF00")),
6,15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//需要改变颜色的范围
// spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")),
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#00FF00")),
20,28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//需要改变颜色的范围
spannableString.setSpan(clickableSpanOne,
6,15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(clickableSpanTwo,
20,28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 不设置点击不生效
mTextView.setMovementMethod(LinkMovementMethod.getInstance());
mTextView.setText(spannableString);
mTextView.setHighlightColor(Color.TRANSPARENT);//去掉点击效果,不加会默认点击有红色背景
stripUnderlines(mTextView); //去除下划线(无效)
}