• 字符间距——扩展


    一:先介绍如何设置字体的颜色,大小;http://blog.csdn.net/lukejunandroid/article/details/25892737

    (一)android.text.SpannableString
    
    构造方法:SpannableString(CharSequence source);
    
    常用方法:
    
    void    removeSpan(Object what)
    void    setSpan(Object what, int start, int end, int flags)
    final CharSequence    subSequence(int start, int end)
    Returns a CharSequence from the start index (inclusive) to the end index (exclusive) of this sequence.
     
    
    (二)android.text.style.TypefaceSpan
    构造方法
    TypefaceSpan(String family)
    TypefaceSpan(Parcel src)
    Changes the typeface family of the text to which the span is attached.

    (三)Spanned继承了接口CharSequence
    Spans of type SPAN_EXCLUSIVE_EXCLUSIVE do not expand to include text inserted at either their starting or ending point.
    不扩展到(文字的开头或结尾点)

    效果预览:

     1 public class MainActivity extends ActionBarActivity {  
     2     private TextView tv, tv2;  
     3     private SpannableString sStr, sStr2;  
     4     @Override  
     5     protected void onCreate(Bundle savedInstanceState) {  
     6         super.onCreate(savedInstanceState);  
     7         setContentView(R.layout.activity_main);  
     8         tv = (TextView) this.findViewById(R.id.textView1);  
     9         tv2 = (TextView) this.findViewById(R.id.textView2);  
    10         //创建一个SpannableString对象  
    11         sStr = new SpannableString("最是那一低头的温柔,像一朵水莲花不胜凉风的娇羞,道一声珍重,道一声珍重,那一声珍重里有蜜甜的忧愁");  
    12         //设置字体(default,default-bold,monospace(单一间隔),serif(衬线),sans-serif(无衬线))  
    13         sStr.setSpan(new TypefaceSpan("default"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    14         sStr.setSpan(new TypefaceSpan("default-bold"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    15         sStr.setSpan(new TypefaceSpan("monospace"), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    16         sStr.setSpan(new TypefaceSpan("serif"), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    17         sStr.setSpan(new TypefaceSpan("sans-serif"), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    18         //设置字体大小(绝对值,单位:像素),第二个参数boolean dip,如果为true,表示前面的字体大小单位为dip,否则为像素  
    19         sStr.setSpan(new AbsoluteSizeSpan(20), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    20         sStr.setSpan(new AbsoluteSizeSpan(20, true), 12, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);       
    21         //设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍   ,0.5表示一半  
    22         sStr.setSpan(new RelativeSizeSpan(0.5f), 14, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
    23         //设置字体前景色     
    24         sStr.setSpan(new ForegroundColorSpan(Color.RED), 16, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
    25         //设置字体背景色     
    26         sStr.setSpan(new BackgroundColorSpan(Color.CYAN), 18, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    27         //设置字体样式: NORMAL正常,BOLD粗体,ITALIC斜体,BOLD_ITALIC粗斜体     
    28         sStr.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 20, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   
    29         sStr.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     
    30         sStr.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     
    31         sStr.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 23, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    32         //设置下划线     
    33         sStr.setSpan(new UnderlineSpan(), 24, 26, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);               
    34         //设置删除线     
    35         sStr.setSpan(new StrikethroughSpan(), 26, 28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    36         //设置上下标     
    37         sStr.setSpan(new SubscriptSpan(), 28, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);       
    38         sStr.setSpan(new SuperscriptSpan(), 30, 32, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   
    39         //设置字体大小(相对值,单位:像素) 参数表示为默认字体宽度的多少倍 ,2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变  
    40         sStr.setSpan(new ScaleXSpan(2.0f), 32, 34, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   
    41         //设置项目符号     
    42         sStr.setSpan(new BulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN), 0 ,sStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第一个参数表示项目符号占用的宽度,第二个参数为项目符号的颜色  
    43         //设置图片     
    44         Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);      
    45         drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
    46         sStr.setSpan(new ImageSpan(drawable), 24, 26, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
    47           
    48         tv.setText(sStr);  
    49         tv.setMovementMethod(LinkMovementMethod.getInstance());  
    50           
    51         sStr2 = new SpannableString("电话邮件百度一下短信彩信进入地图");  
    52         //超级链接(需要添加setMovementMethod方法附加响应)     
    53         sStr2.setSpan(new URLSpan("tel:8008820"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //电话        
    54         sStr2.setSpan(new URLSpan("mailto:kejunlu@qq.com"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //邮件        
    55         sStr2.setSpan(new URLSpan("http://www.baidu.com"), 4, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //网络        
    56         sStr2.setSpan(new URLSpan("sms:10086"), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //短信   使用sms:或者smsto:     
    57         sStr2.setSpan(new URLSpan("mms:10086"), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //彩信   使用mms:或者mmsto:     
    58         sStr2.setSpan(new URLSpan("geo:32.123456,-17.123456"), 12, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //地图   
    59           
    60         tv2.setText(sStr2);  
    61         tv2.setMovementMethod(LinkMovementMethod.getInstance());  
    62     }  

     

     


     

     

  • 相关阅读:
    Java中怎样由枚举常量的ordinal值获得枚举常量对象
    深入了解泛型
    艰苦的RAW格式数据恢复之旅
    eclipse 代码清理 代码格式化 代码凝视
    应用策略设计模式
    JavaEE SSH集成框架(两) struts2 本地加载dtd文件,action组态
    关闭表空间的热备份实例重新启动重现错误和解决
    CF 148D. Bag of mice (可能性DP)
    C++ Primer 学习笔记_45_STL实践与分析(19)--建筑常规算法
    工作的几点思考
  • 原文地址:https://www.cnblogs.com/liyanli-mu640065/p/4523597.html
Copyright © 2020-2023  润新知