Android TextView設置個別字體樣式


TextView進一步深化:
      Textview 能夠對其文字進行格式化。

      通過查詢資料,了解到格式化文字的方式主要分為兩大類:
 第一類:HTML標簽格式化文字
     代碼比較簡單。例如以下:
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.text.Html;  
  4. import android.widget.TextView;  
  5.   
  6. public class AndroidFronColorTest extends Activity  
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState)  
  9.         super.onCreate(savedInstanceState);  
  10.           
  11.         setContentView(R.layout.main);  
  12.           
  13.         TextView htmlFormateTextView (TextView)findViewById(R.id.testTextView);  
  14.           
  15.         String source "這僅僅是一個測試,測試<u>下划線</u>、<i>斜體字</i>、<font color='red'>紅色字</font>的格式" 
  16.    
  17.         htmlFormateTextView.setText(Html.fromHtml(source));  
  18.      


第二類通過SpannableString進行格式化操作:
  1. public class TextViewLinkActivity extends Activity  
  2.     TextView mTextView null    
  3.     SpannableString msp null   
  4.       
  5.       
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState)  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.main);  
  10.           
  11.         mTextView (TextView)findViewById(R.id.myTextView);  
  12.           
  13.         //創建一個 SpannableString對象    
  14.         msp new SpannableString("字體測試字體大小一半兩倍前景色背景色正常粗體斜體粗斜體下划線刪除線x1x2電話郵件站點短信彩信地圖X軸綜合");   
  15.           
  16.         //設置字體(default,default-bold,monospace,serif,sans-serif)  
  17.         msp.setSpan(new TypefaceSpan("monospace"), 02Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  18.         msp.setSpan(new TypefaceSpan("serif"), 24Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  19.           
  20.         //設置字體大小(絕對值,單位:像素)   
  21.         msp.setSpan(new AbsoluteSizeSpan(20), 46Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  22.         msp.setSpan(new AbsoluteSizeSpan(20,true), 68Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //第二個參數boolean dip,假設為true。表示前面的字體大小單位為dip,否則為像素。同上。  
  23.           
  24.         //設置字體大小(相對值,單位:像素) 參數表示為默認字體大小的多少倍  
  25.         msp.setSpan(new RelativeSizeSpan(0.5f), 810Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //0.5f表示默認字體大小的一半  
  26.         msp.setSpan(new RelativeSizeSpan(2.0f), 1012Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //2.0f表示默認字體大小的兩倍  
  27.           
  28.         //設置字體前景色  
  29.         msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 1215Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //設置前景色為洋紅色  
  30.           
  31.         //設置字體背景色  
  32.         msp.setSpan(new BackgroundColorSpan(Color.CYAN), 1518Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //設置背景色為青色  
  33.        
  34.         //設置字體樣式正常,粗體,斜體,粗斜體  
  35.         msp.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 1820Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //正常  
  36.         msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 2022Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗體  
  37.         msp.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 2224Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //斜體  
  38.         msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 2427Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗斜體  
  39.           
  40.         //設置下划線  
  41.         msp.setSpan(new UnderlineSpan(), 2730Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  42.           
  43.         //設置刪除線  
  44.         msp.setSpan(new StrikethroughSpan(), 3033Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  45.           
  46.         //設置上下標  
  47.         msp.setSpan(new SubscriptSpan(), 3435Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //下標     
  48.         msp.setSpan(new SuperscriptSpan(), 3637Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   //上標              
  49.           
  50.         //超級鏈接(須要加入setMovementMethod方法附加響應)  
  51.         msp.setSpan(new URLSpan("tel:4155551212"), 3739Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //電話     
  52.         msp.setSpan(new URLSpan("mailto:webmaster@google.com"), 3941Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //郵件     
  53.         msp.setSpan(new URLSpan("http://www.baidu.com"), 4143Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //網絡     
  54.         msp.setSpan(new URLSpan("sms:4155551212"), 4345Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //短信   使用sms:或者smsto:  
  55.         msp.setSpan(new URLSpan("mms:4155551212"), 4547Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //彩信   使用mms:或者mmsto:  
  56.         msp.setSpan(new URLSpan("geo:38.899533,-77.036476"), 4749Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //地圖     
  57.           
  58.         //設置字體大小(相對值,單位:像素) 參數表示為默認字體寬度的多少倍  
  59.         msp.setSpan(new ScaleXSpan(2.0f), 4951Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默認字體寬度的兩倍,即X軸方向放大為默認字體的兩倍,而高度不變  
  60.        //SpannableString對象設置給TextView  
  61.         myTextView.setText(sp);  
  62.         //設置TextView可點擊  
  63.         myTextView.setMovementMethod(LinkMovementMethod.getInstance());  
  64.    
  65. }
  66. 在使用SpannableString對象時要注意   
  67. Spanned.SPAN_EXCLUSIVE_EXCLUSIVE等的作用:
  68. 用來標識在 Span 范圍內的文本前后輸入新的字符時是否把它們也應用這個效果。分別有Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包含)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包含。后面不包含)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包含,后面包含)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包含)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM