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(前后都包含)。

  • 相关阅读:
    零点存在定理与介值定理
    moco入门
    git的基础操作-入门
    有道笔记链接地址 -----关于python
    Linux学习---linux的svn的配置与安装
    Linux学习---linux系统下安装配置Jenkins
    Linux学习-linux系统下安装jdk和tomcat,以及遇到的问题清单
    Linux学习-linux系统下python升级到python3.6步骤详解,以及遇到的问题解决
    Linux学习---Linux目录结构说明
    电脑屏幕左上角出现一个小的白块
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6874194.html
Copyright © 2011-2022 走看看