zoukankan      html  css  js  c++  java
  • 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(前后都包含)。

  • 相关阅读:
    hdu 2795 Billboard
    serialusbfn.dll这个罪魁祸首搞得我郁闷之极(作者:wogoyixikexie@gliet)
    开发板买来后如何练习写驱动、开发BSP?(作者:wogoyixikexie@gliet)
    PB命令行——查看DLL导出函数
    【劲爆】发帖达到要求即可获得一块mini6410/OK6410开发板!
    GOD!我终于找到博客园设置博客文章图片签名的方法了!
    如何删除wince5.0控制面板的密码设置以及拨号等组件
    【原创】最值得推荐wince应用和wince驱动入门书籍
    gooogleman嵌入式联盟之图标初步设计进展
    2440 5.0BSP之OEMInterruptHandler函数
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6874194.html
Copyright © 2011-2022 走看看