项目中有一个小需求,就是在textview中支持web地址,这个属性好设置,在textview中配置文件加一行android:autoLink="web"搞定,可是默认的textview样式中带有下划线,连接颜色是蓝色,这个颜色好改,有专门的方法,关键是如何去掉下划线,百度一下发现了一种解决方案,可是普通文字也和文字成为了一个颜色,最后谷歌到一个老外的解决方案,管用了,现在和大家分享。
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.setText(s);
}
}
搞定。
/questions/4096851/remove-underline-from-links-in-textview-android参考地址