如何在android中创建没有下划线的textview链接

时间:2014-04-20 05:54:25

标签: android textcolor text-decorations

我进入这种有线情况,我的代码如下

LinearLayout ll = new LinearLayout(this);
TextView tv = new TextView(this);
ll.addView(tv);
tv.setText(Html.fromHtml("<a STYLE=\"text-decoration:none;\" href=\"" 
        + StringEscapeUtils.escapeJava(elem.getChildText("newsLink")) + "\">" 
                + StringEscapeUtils.escapeJava(elem.getChildText("Title")) + "</a>"));
tv.setTextColor(Color.BLACK);

但是style="text-decoration:none"tv.setTextColor(color.black)都不起作用,链接仍然是带有下划线的蓝色,有关他们为什么不工作的任何提示?谢谢!

2 个答案:

答案 0 :(得分:8)

你可以试试这个。比如

String content = "your <a href='http://some.url'>html</a> content";

以下是从超链接中删除下划线的简明方法:

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);
}
tv.setText(s);

答案 1 :(得分:0)

您可以在此处使用SpannableURLSpan删除代码中的超链接下划线

首先将您的锚标记文本设为Spannable

Spannable spannedText = Spannable.Factory.getInstance().newSpannable(
            Html.fromHtml(webLinkText));

创建新课程URLSpanNoUnderline并使用URLSpan进行扩展并覆盖updateDrawState方法。在该方法中,您可以将setUnderlineText设置为false

然后使用此方法您可以删除链接

public static Spannable removeUnderlines(Spannable p_Text) {  
       URLSpan[] spans = p_Text.getSpans(0, p_Text.length(), URLSpan.class);  
       for (URLSpan span : spans) {  
            int start = p_Text.getSpanStart(span);  
            int end = p_Text.getSpanEnd(span);  
            p_Text.removeSpan(span);  
            span = new URLSpanNoUnderline(span.getURL());  
            p_Text.setSpan(span, start, end, 0);  
       }  
       return p_Text;  
  }  

有关详细信息,请访问此link