閱讀544 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Android使用TextView實現無下劃線超鏈接

Android係統默認把網址、電話、地圖(geo地址)、郵箱等轉換為超鏈接。
具體請查看android:TextView設置文本樣式和超鏈接

和HTML中的一樣,默認超鏈接都帶下劃線的,下麵的方案可以在TextView中去掉超鏈接的下劃線:

1、重寫ClickableSpan類來去掉下劃線樣式(係統默認使用ClickableSpan來封裝超鏈接)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//無下劃線超鏈接,使用textColorLink、textColorHighlight分別修改超鏈接前景色和按下時的顏色
private class NoLineClickSpan extends ClickableSpan { 
    String text;

    public NoLineClickSpan(String text) {
        super();
        this.text = text;
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(ds.linkColor);
        ds.setUnderlineText(false); <span style="color: red;">//去掉下劃線</span>
    }

    @Override
    public void onClick(View widget) { 
        processHyperLinkClick(text); <span style="color: red;">//點擊超鏈接時調用</span>
    }
}


2、把超鏈接文本封裝為NoLineClickSpan對象,並添加到TextView中

1
2
3
4
5
6
TextView tv = findViewById(R.id.tv_click);
SpannableString spStr = new SpannableString("蘿卜白菜博客--&gt;https://orgcent.com");
ClickSpan clickSpan = new NoLineClickSpan(vo); //設置超鏈接
spStr.setSpan(clickSpan, 0, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tv.append(spStr);
tv.setMovementMethod(LinkMovementMethod.getInstance());

PS:不用把TextView的屬性autoLink設為”all”.

3、設置超鏈接為可點擊狀態

1
tv.setMovementMethod(LinkMovementMethod.getInstance());

PS:在NoLineClickSpan類中實現onClick()回調方法.

轉載請注明地址: https://orgcent.com/android-textview-no-underline-hyperlink/ | 蘿卜白菜的博客

最後更新:2017-04-02 16:47:52

  上一篇:go android源碼編譯錯誤總結
  下一篇:go HTML,javascript,Json數據在線格式化工具