在Android中EditText用于编辑文本,TextView用于显示文本,但是有时候我们需要对其中的文本进行样式等方面的设置。Android为我们提供了SpannableString类来对指定文本进行处理。

1) ForegroundColorSpan        文本颜色

  1. private void setForegroundColorSpan() {
  2. SpannableString spanString = new SpannableString("前景色");
  3. ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);
  4. spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

2) BackgroundColorSpan文本背景色

  1. private void setBackgroundColorSpan() {
  2. SpannableString spanString = new SpannableString("背景色");
  3. BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);
  4. spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

3) StyleSpan         字体样式:粗体、斜体等

  1. private void setStyleSpan() {
  2. SpannableString spanString = new SpannableString("粗体斜体");
  3. StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);
  4. spanString.setSpan(span, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

4) RelativeSizeSpan         相对大小

  1. private void setRelativeFontSpan() {
  2. SpannableString spanString = new SpannableString("字体相对大小");
  3. spanString.setSpan(new RelativeSizeSpan(2.5f), 0, 6,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  4. tv.append(spanString);
  5. }

5) TypefaceSpan         文本字体

  1. private void setTypefaceSpan() {
  2. SpannableString spanString = new SpannableString("文本字体");
  3. spanString.setSpan(new TypefaceSpan("monospace"), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. tv.append(spanText);
  5. }

6) URLSpan 文本超链接

  1. private void addUrlSpan() {
  2. SpannableString spanString = new SpannableString("超链接");
  3. URLSpan span = new URLSpan("http://www.baidu.com");
  4. spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

7) ImageSpan         图片

  1. private void addImageSpan() {
  2. SpannableString spanString = new SpannableString(" ");
  3. Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
  4. d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
  5. ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
  6. spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  7. tv.append(spanString);
  8. }

8) ClickableSpan                 文本有点击事件

  1. private TextView textView;
  2. textView = (TextView)this.findViewById(R.id.textView);
  3. String text = "显示Activity";
  4. SpannableString spannableString = new SpannableString(text);
  5. spannableString.setSpan(new ClickableSpan() {
  6. @Override
  7. public void onClick(View widget) {
  8. Intent intent = new Intent(Main.this,OtherActivity.class);
  9. startActivity(intent);
  10. }
  11. // 表示点击整个text的长度都有效触发这个事件
  12. }, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  13. textView.setText(spannableString);
  14. textView.setMovementMethod(LinkMovementMethod.getInstance());

9) UnderlineSpan         下划线

  1. private void addUnderLineSpan() {
  2. SpannableString spanString = new SpannableString("下划线");
  3. UnderlineSpan span = new UnderlineSpan();
  4. spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

10) StrikethroughSpan         删除线

  1. private void addStrikeSpan() {
  2. SpannableString spanString = new SpannableString("删除线");
  3. StrikethroughSpan span = new StrikethroughSpan();
  4. spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

11) SuggestionSpan 相当于占位符

12) MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)

13) RasterizerSpan         光栅效果

14) AbsoluteSizeSpan         绝对大小(文本字体)

  1. private void setAbsoluteFontSpan() {
  2. SpannableString spannableString = new SpannableString("40号字体");
  3. AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(40);
  4. spannableString.setSpan(absoluteSizeSpan, 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. editText.append(spannableString);
  6. }

15) DynamicDrawableSpan    设置图片,基于文本基线或底部对齐。

16) TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)

  1. private void setTextAppearanceSpan() {
  2. SpannableString spanString = new SpannableString("文本外貌");
  3. TextAppearanceSpan textAppearanceSpan = new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium);
  4. spanString.setSpan(textAppearanceSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

[置顶] Android EditText/TextView使用SpannableString显示复合文本的更多相关文章

  1. [Android教程]TextView使用SpannableString设置复合文本

    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...

  2. 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色

    通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...

  3. 我的Android进阶之旅------> Android为TextView组件中显示的文本加入背景色

    通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...

  4. 我的Android进阶之旅------> Android为TextView组件中显示的文本加入背景色

    通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...

  5. Android :TextView使用SpannableString设置复合文本

    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...

  6. Android 使用SpannableString显示复合文本

    http://blog.csdn.net/feizhixuan46789/article/details/10334441 http://www.th7.cn/Program/Android/2014 ...

  7. TextView使用SpannableString设置复合文本(转)

    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...

  8. TextView使用SpannableString设置复合文本

    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...

  9. [置顶] android 自定义TextView

    系统自带的控件TextView有时候没满一行就换行了,为了解决这个问题,自定义了一个TextView,只有一行显示不完全的情况下才会去换行显示,代码如下: package com.open.textv ...

随机推荐

  1. window.open和window.close的使用详解

    有时候,我们想通过JS实现一个<a>的新开标签的效果,此时我们想到了window.open方法实现.那么window.open到底应该怎么使用呢?   我们知道window.open可以新 ...

  2. phpcms:八、show.html

    标题:{$title}来源:{$copyfrom}评论:<a href="#comment_iframe" id="comment">0</a ...

  3. poj 3258 River Hopscotch(二分搜索之最大化最小值)

    Description Every year the cows hold an ≤ L ≤ ,,,). Along the river between the starting and ending ...

  4. ubuntu14.04 + cocos2d-x-2.2.6 + eclipse发布android + Qt Creator4

    先把需要的东西准备好,打开控制台,执行以下语句: sudo apt--jdk lib32z1 lib32ncurses5 lib32bz2- 接下来,准备好cocos2d-x-2.2.6和 andro ...

  5. pyqt颜色字符

    from PyQt4.QtGui import QPlainTextEdit, QWidget, QVBoxLayout, QApplication, \ QFileDialog, QMessageB ...

  6. BNU10791:DOTA选人

    DOTA(Defense of the Ancients)是一款很受欢迎的游戏.DOTA将10个游戏玩家分为两组,分别为天灾和近卫,推倒对方主基地的一方获得胜利.每个玩家可以选择一个英雄作为游戏中的角 ...

  7. hdu1015(Safecracker )

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  8. hdu5353 Average(模拟)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Average Time Limit: 4000/2000 MS (Java/Ot ...

  9. vc2015编译protobuf

    下载地址:https://github.com/google/protobuf 1.编译通过cmake生成sln文件来编译用cmd命令 cd 到3.0.0-beta-4\cmake mkdir bui ...

  10. mysql grant all privileges on

    遇到了 SQLException: access denied for @'localhost' (using password: no) 解决办法 grant all privileges on * ...