[java] view plain copy
  1. importjava.io.IOException;
  2. importorg.xmlpull.v1.XmlPullParserException;
  3. importandroid.app.Activity;
  4. importandroid.content.res.ColorStateList;
  5. importandroid.content.res.XmlResourceParser;
  6. importandroid.graphics.Bitmap;
  7. importandroid.graphics.BitmapFactory;
  8. importandroid.graphics.Color;
  9. importandroid.graphics.drawable.Drawable;
  10. importandroid.os.Bundle;
  11. importandroid.text.SpannableString;
  12. importandroid.text.Spanned;
  13. importandroid.text.method.LinkMovementMethod;
  14. importandroid.text.style.AbsoluteSizeSpan;
  15. importandroid.text.style.BackgroundColorSpan;
  16. importandroid.text.style.BulletSpan;
  17. importandroid.text.style.DrawableMarginSpan;
  18. importandroid.text.style.ForegroundColorSpan;
  19. importandroid.text.style.IconMarginSpan;
  20. importandroid.text.style.ImageSpan;
  21. importandroid.text.style.RelativeSizeSpan;
  22. importandroid.text.style.ScaleXSpan;
  23. importandroid.text.style.StrikethroughSpan;
  24. importandroid.text.style.StyleSpan;
  25. importandroid.text.style.SubscriptSpan;
  26. importandroid.text.style.SuperscriptSpan;
  27. importandroid.text.style.TextAppearanceSpan;
  28. importandroid.text.style.TypefaceSpan;
  29. importandroid.text.style.URLSpan;
  30. importandroid.text.style.UnderlineSpan;
  31. importandroid.widget.TextView;
  32. publicclassTextViewLinkActivityextendsActivity{
  33. TextViewmTextView=null;
  34. SpannableStringmsp=null;
  35. /**Calledwhentheactivityisfirstcreated.*/
  36. @Override
  37. publicvoidonCreate(BundlesavedInstanceState){
  38. super.onCreate(savedInstanceState);
  39. setContentView(R.layout.main);
  40. mTextView=(TextView)findViewById(R.id.myTextView);
  41. //创建一个SpannableString对象
  42. msp=newSpannableString("字体测试字体大小一半两倍前景色背景色正常粗体斜体粗斜体下划线删除线x1x2电话邮件网站短信彩信地图X轴综合/bot");
  43. //设置字体(default,default-bold,monospace,serif,sans-serif)
  44. msp.setSpan(newTypefaceSpan("monospace"),0,2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  45. msp.setSpan(newTypefaceSpan("serif"),2,4,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  46. //设置字体大小(绝对值,单位:像素)
  47. msp.setSpan(newAbsoluteSizeSpan(20),4,6,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  48. msp.setSpan(newAbsoluteSizeSpan(20,true),6,8,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//第二个参数booleandip,如果为true,表示前面的字体大小单位为dip,否则为像素,同上。
  49. //设置字体大小(相对值,单位:像素)参数表示为默认字体大小的多少倍
  50. msp.setSpan(newRelativeSizeSpan(0.5f),8,10,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//0.5f表示默认字体大小的一半
  51. msp.setSpan(newRelativeSizeSpan(2.0f),10,12,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//2.0f表示默认字体大小的两倍
  52. //设置字体前景色
  53. msp.setSpan(newForegroundColorSpan(Color.MAGENTA),12,15,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置前景色为洋红色
  54. //设置字体背景色
  55. msp.setSpan(newBackgroundColorSpan(Color.CYAN),15,18,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置背景色为青色
  56. //设置字体样式正常,粗体,斜体,粗斜体
  57. msp.setSpan(newStyleSpan(android.graphics.Typeface.NORMAL),18,20,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//正常
  58. msp.setSpan(newStyleSpan(android.graphics.Typeface.BOLD),20,22,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//粗体
  59. msp.setSpan(newStyleSpan(android.graphics.Typeface.ITALIC),22,24,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//斜体
  60. msp.setSpan(newStyleSpan(android.graphics.Typeface.BOLD_ITALIC),24,27,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//粗斜体
  61. //设置下划线
  62. msp.setSpan(newUnderlineSpan(),27,30,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  63. //设置删除线
  64. msp.setSpan(newStrikethroughSpan(),30,33,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  65. //设置上下标
  66. msp.setSpan(newSubscriptSpan(),34,35,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//下标
  67. msp.setSpan(newSuperscriptSpan(),36,37,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//上标
  68. //超级链接(需要添加setMovementMethod方法附加响应)
  69. msp.setSpan(newURLSpan("tel:4155551212"),37,39,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//电话
  70. msp.setSpan(newURLSpan("mailto:webmaster@google.com"),39,41,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//邮件
  71. msp.setSpan(newURLSpan("http://www.baidu.com"),41,43,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//网络
  72. msp.setSpan(newURLSpan("sms:4155551212"),43,45,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//短信使用sms:或者smsto:
  73. msp.setSpan(newURLSpan("mms:4155551212"),45,47,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//彩信使用mms:或者mmsto:
  74. msp.setSpan(newURLSpan("geo:38.899533,-77.036476"),47,49,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//地图
  75. //设置字体大小(相对值,单位:像素)参数表示为默认字体宽度的多少倍
  76. msp.setSpan(newScaleXSpan(2.0f),49,51,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变
  77. //设置字体(依次包括字体名称,字体大小,字体样式,字体颜色,链接颜色)
  78. ColorStateListcsllink=null;
  79. ColorStateListcsl=null;
  80. XmlResourceParserxppcolor=getResources().getXml(R.color.color);
  81. try{
  82. csl=ColorStateList.createFromXml(getResources(),xppcolor);
  83. }catch(XmlPullParserExceptione){
  84. //TODO:handleexception
  85. e.printStackTrace();
  86. }catch(IOExceptione){
  87. //TODO:handleexception
  88. e.printStackTrace();
  89. }
  90. XmlResourceParserxpplinkcolor=getResources().getXml(R.color.linkcolor);
  91. try{
  92. csllink=ColorStateList.createFromXml(getResources(),xpplinkcolor);
  93. }catch(XmlPullParserExceptione){
  94. //TODO:handleexception
  95. e.printStackTrace();
  96. }catch(IOExceptione){
  97. //TODO:handleexception
  98. e.printStackTrace();
  99. }
  100. msp.setSpan(newTextAppearanceSpan("monospace",android.graphics.Typeface.BOLD_ITALIC,30,csl,csllink),51,53,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  101. //设置项目符号
  102. msp.setSpan(newBulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN),0,msp.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//第一个参数表示项目符号占用的宽度,第二个参数为项目符号的颜色
  103. //设置图片
  104. Drawabledrawable=getResources().getDrawable(R.drawable.icon);
  105. drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
  106. msp.setSpan(newImageSpan(drawable),53,57,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  107. mTextView.setText(msp);
  108. mTextView.setMovementMethod(LinkMovementMethod.getInstance());
  109. }
  110. }

更多相关文章

  1. numberPicker实现时间选择设置功能
  2. Android设置输入框和软键盘动态悬浮
  3. Android与HTML5交互模版
  4. 安卓加载网页
  5. popuwindow
  6. android 在WebView打开网页
  7. Android(安卓)Tint ImageView 无法设置Tintlist问题
  8. Android(安卓)RatingBar
  9. AppTheme属性设置集合

随机推荐

  1. Android发送xml数据给服务器的方法
  2. Android函数计算器(含源码,Android测试工程
  3. Java中为何与0xff进行与运算
  4. android下m、mm、mmm编译命令的使用
  5. Android(安卓)学生信息管理系统
  6. 使用Visual Studio 2015开发Android(安卓
  7. android的EditText获取另一个焦点
  8. 横屏启动activity,点击屏幕的单击、双击
  9. Android服务查询完整过程源码分析
  10. Android对话框自定义标题 对话框标题美化