Remove underline from links in TextView
 I am using two textview to display links from database, I managed to change link colors but I want to remove the underline  
email.setText(c.getString(5));
    website.setText(c.getString(6));
    Linkify.addLinks(email, Linkify.ALL);
    Linkify.addLinks(website, Linkify.ALL);
Can I do that from XML or Code ?
 You can do it in code by finding and replacing the URLSpan instances with versions that don't underline.  After you call Linkify.addLinks() , call the function stripUnderlines() pasted below on each of your TextView s:  
    private void stripUnderlines(TextView textView) {
        Spannable s = new SpannableString(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);
    }
This requires a customized version of URLSpan which doesn't enable the TextPaint's "underline" property:
    private class URLSpanNoUnderline extends URLSpan {
        public URLSpanNoUnderline(String url) {
            super(url);
        }
        @Override public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
    }
Given a textView and content:
TextView textView = (TextView) findViewById(R.id.your_text_view_id);
String content = "your <a href='http://some.url'>html</a> content";
Here is a concise way to remove underlines from hyperlinks:
Spannable s = (Spannable) Html.fromHtml(content);
for (URLSpan u: s.getSpans(0, s.length(), URLSpan.class)) {
    s.setSpan(new UnderlineSpan() {
        public void updateDrawState(TextPaint tp) {
            tp.setUnderlineText(false);
        }
    }, s.getSpanStart(u), s.getSpanEnd(u), 0);
}
textView.setText(s);
This is based on the approach suggested by robUx4.
In order to make the links clickable you also need to call:
textView.setMovementMethod(LinkMovementMethod.getInstance());
 UnderlineSpan already exists, but can only set the underline.  
 Another solution is to add a no underline span on each existing URLSpan .  Thus the underline state is disabled just before painting.  This way you keep your URLSpan (possibly custom) classes and all other styles set elsewhere.  
public class NoUnderlineSpan extends UnderlineSpan {
    public NoUnderlineSpan() {}
    public NoUnderlineSpan(Parcel src) {}
    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setUnderlineText(false);
    }
}
Here is how you set it without removing the existing URLSpan object:
URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
for (URLSpan span: spans) {
    int start = s.getSpanStart(span);
    int end = s.getSpanEnd(span);
    NoUnderlineSpan noUnderline = new NoUnderlineSpan();
    s.setSpan(noUnderline, start, end, 0);
}
上一篇: 用数据库发送应用程序
下一篇: 从TextView中的链接中删除下划线
