Как создать текстовую ссылку без подчеркивания в Android

Я попал в эту проводную ситуацию, мой код следующий

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 ответа

Решение

Вы можете попробовать это. такие как

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);

Ты можешь использовать Spannable а также URLSpan здесь, чтобы удалить подчеркивание гиперссылки из вашего кода

Прежде всего, сделайте ваш текст привязки тега в 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;  
  }  

Для получения дополнительной информации вы можете посетить эту ссылку

Другие вопросы по тегам