Android TextView 添加底線的幾種方式

來源:互聯網
上載者:User

標籤:

總結起來大概有5種做法: 
1.當文字中出現URL、E-mail、電話號碼等的時候,可以將TextView的android:autoLink屬性設定為相應的的值,   如 果是所有的類型都出來就是android:autoLink="all"。當然也可以在java代碼裡 做,textView01.setAutoLinkMask(Linkify.ALL); 
2.將要處理的文字寫到一個資源檔,如string.xml,然後的java代碼裡引用(直接寫在代碼了是不可行的,會直接把文字都顯示處理) 
3.用Html類的fromHtml()方法格式化要放到TextView裡的文字 4.設定TextView的Paint屬性:tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //底線
5.用Spannable或實現它的類,如SpannableString來格式,部分字串。   另外附上一篇部落格介紹:Android TextView中文字通過SpannableString來設定超連結、顏色、字型等屬性  如果是在資源檔裡:1、字串資源中設定底線屬性
<resources>    <string name="hello"><u>phone:0123456</u></string>    <string name="app_name">MyLink</string></resources>
直接讓TextView引用字串資源的name即可。

2、TextView設定autoLink屬性
<TextView xmlns:android="http://schemas.android.com/apk/res/android"  
     android:id="@+id/text1"
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:autoLink="all"  
     android:text="@string/link_text_auto"  />  

如果是代碼裡:
1、使用Html.fromHtml()
TextView textView = (TextView)findViewById(R.id.tv_test); textView.setText(Html.fromHtml("<u>"+"0123456"+"</u>"));

2、使用TextView的Paint的屬性
tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //底線
tvTest.getPaint().setAntiAlias(true);//消除鋸齒

3、使用SpannableString類
SpannableString content = new SpannableString(str);
content.setSpan(new UnderLineSpan, 0, str.length(), 0);

代碼裡面自訂超連結樣式:
TextView tv=new TextView(this);
tv.setText(Html.fromHtml("<a href=\"http://blog.csdn.net/CAIYUNFREEDOM\">自訂的超連結樣式</a>"));
// 在單擊連結時凡是有要執行的動作,都必須設定MovementMethod對象
tv.setMovementMethod(LinkMovementMethod.getInstance());  
CharSequence text  =  tv.getText();
if (text instanceof Spannable){ 
     int  end  =  text.length();   
     Spannable sp  =  (Spannable)tv.getText();   
     URLSpan[] urls = sp.getSpans( 0 , end, URLSpan.class );   
             
     SpannableStringBuilder style = new  SpannableStringBuilder(text);   
     style.clearSpans(); // should clear old spans    
     for (URLSpan url : urls){     
          URLSpan myURLSpan=   new  URLSpan(url.getURL());                        
          style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
          style.setSpan(new ForegroundColorSpan(Color.RED), sp.getSpanStart(url),
                 sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//設定前景色彩為紅色
     } 
     tv.setText(style);   
}


另外一篇文章中有幾個具體的執行個體可以參考:
http://hunankeda110.iteye.com/blog/1420470

Android TextView 添加底線的幾種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.