我们使用QQ,微信的时候,会发现:其文本样式多种多样,可以在TextView中显示表情,图片,超链接等等。今天就来大致总结一下相关的样式。
先看代码:
1. /**
2. * 设置前景色
3. * @param tv
4. */
5. private void setForegroundColorSpan(TextView tv) {
6. new SpannableString("前景色textview");
7. new ForegroundColorSpan(Color.BLUE);
8. 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
9. tv.append(spanString);
10. }
11.
12. /**
13. * 设置背景色
14. * @param tv
15. */
16. private void setBackgroundColorSpan(TextView tv) {
17. new SpannableString("背景色textview");
18. new BackgroundColorSpan(Color.YELLOW);
19. 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
20. tv.append(spanString);
21. }
22. /**
23. * 设置粗体样式
24. * @param tv
25. */
26. private void setStyleSpan(TextView tv) {
27. new SpannableString("粗体斜体textview");
28. new StyleSpan(Typeface.BOLD_ITALIC);
29. 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
30. tv.append(spanString);
31. }
32. /**
33. * 设置字体大小
34. * @param tv
35. */
36. private void setRelativeFontSpan(TextView tv) {
37. new SpannableString("字体相对大小textview");
38. new RelativeSizeSpan(2.5f), 0, 6,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
39. tv.append(spanString);
40. }
41. /**
42. * 设置文本字体
43. * @param tv
44. */
45. private void setTypefaceSpan(TextView tv) {
46. new SpannableString("文本字体textview");
47. new TypefaceSpan("monospace"), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
48. tv.append(spanString);
49. }
50. /**
51. * 添加URL超链接
52. * @param tv
53. */
54. private void addUrlSpan(TextView tv) {
55. new SpannableString("csdntextview");
5;
57. 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
58. tv.append(spanString);
59. tv.setMovementMethod(LinkMovementMethod.getInstance());
60. }
61. /**
62. * 在文字中显示图片表情等
63. * @param tv
64. */
65. private void addImageSpan(TextView tv) {
66. new SpannableString("文中有图片表情等textview");
67. Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
68. 0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
69. new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
70. 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
71. tv.append(spanString);
72. }
73. /**
74. * 点击后跳转Activity
75. * @param textView
76. * @param packageContext
77. * @param cls
78. */
79. private void clickableSpan(TextView textView,final Context packageContext,final Class<?> cls){
80. "显示Activity";
81. new SpannableString(text);
82. new ClickableSpan() {
83. @Override
84. public void onClick(View widget) {
85. new Intent(packageContext,cls);
86. startActivity(intent);
87. }
88. // 表示点击整个text的长度都有效触发这个事件
89. 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
90. textView.setText(spannableString);
91. textView.setMovementMethod(LinkMovementMethod.getInstance());
92. }
93. /**
94. * 添加下划线
95. * @param tv
96. */
97. private void addUnderLineSpan(TextView tv) {
98. new SpannableString("下划线textview");
99. new UnderlineSpan();
100. 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
101. tv.append(spanString);
102. }
103. /**
104. * 添加删除线样式
105. * @param tv
106. */
107. private void addStrikeSpan(TextView tv) {
108. new SpannableString("删除线textview");
109. new StrikethroughSpan();
110. 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
111. tv.append(spanString);
112. }
效果截图:
更多样式,参见官方文档。
http://developer.android.com/reference/android/text/style/package-summary.html