android SpannableString使用详解

转载 2015年11月20日 11:08:00
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class SpannableStringActivity extends Activity implements
OnClickListener {


private EditText tv;
private Button underline_btn;
private Button strike_btn;
private Button style_btn;
private Button font_btn;
private Button color_btn1;
private Button color_btn2;
private Button url_btn;
private Button image_btn;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    tv = (EditText) this.findViewById(R.id.tv);
    underline_btn = (Button) this.findViewById(R.id.underline_btn);
    strike_btn = (Button) this.findViewById(R.id.strike_btn);
    style_btn = (Button) this.findViewById(R.id.style_btn);
    font_btn = (Button) this.findViewById(R.id.font_btn);
    color_btn1 = (Button) this.findViewById(R.id.color_btn1);
    color_btn2 = (Button) this.findViewById(R.id.color_btn2);
    url_btn = (Button) this.findViewById(R.id.url_btn);
    image_btn = (Button) this.findViewById(R.id.image_btn);


    underline_btn.setOnClickListener(this);
    strike_btn.setOnClickListener(this);
    style_btn.setOnClickListener(this);
    font_btn.setOnClickListener(this);
    color_btn1.setOnClickListener(this);
    color_btn2.setOnClickListener(this);
    url_btn.setOnClickListener(this);
    image_btn.setOnClickListener(this);
}


@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.underline_btn:
        addUnderLineSpan();
        break;
    case R.id.strike_btn:
        addStrikeSpan();
        break;
    case R.id.style_btn:
        addStyleSpan();
        break;
    case R.id.font_btn:
        addFontSpan();
        break;
    case R.id.color_btn1:
        addForeColorSpan();
        break;
    case R.id.color_btn2:
        addBackColorSpan();
        break;
    case R.id.url_btn:
        addUrlSpan();
        break;
    case R.id.image_btn:
        addImageSpan();
        break;
<span style="white-space:pre">	</span>}
}


/**
* 超链接
*/
private void addUrlSpan() {
    SpannableString spanString = new SpannableString("超链接");
    URLSpan span = new URLSpan("tel:0123456789");
    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}


/**
* 文字背景颜色
*/
private void addBackColorSpan() {
    SpannableString spanString = new SpannableString("颜色2");
    BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);
    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}


/**
* 文字颜色
*/
private void addForeColorSpan() {
    SpannableString spanString = new SpannableString("颜色1");
    ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);
    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}


/**
* 字体大小
*/
private void addFontSpan() {
    SpannableString spanString = new SpannableString("36号字体");
    AbsoluteSizeSpan span = new AbsoluteSizeSpan(36);
    spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}


/**
* 粗体,斜体
*/
private void addStyleSpan() {
    SpannableString spanString = new SpannableString("BIBI");
    StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);
    spanString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}


/**
* 删除线
*/
private void addStrikeSpan() {
    SpannableString spanString = new SpannableString("删除线");
    StrikethroughSpan span = new StrikethroughSpan();
    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}

/**
* 下划线
*/
private void addUnderLineSpan() {
    SpannableString spanString = new SpannableString("下划线");
    UnderlineSpan span = new UnderlineSpan();
    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}



/**
* 图片
*/
private void addImageSpan() {
    SpannableString spanString = new SpannableString(" ");
    Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
    ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
    spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(spanString);
}
}


原文地址:http://blog.csdn.net/g475266696/article/details/7668988

android:SpannableString的应用,TextView中某些文字的点击事件

在这篇文章中点击打开链接 我已经解释了关于SpannableString如何应用 各种的Span就是通过SpannableString来封装样式的,设置完Span之后需要将Span放入到Spannab...
  • su20145104009
  • su20145104009
  • 2016年02月16日 21:15
  • 5957

Android_用SpannableString实现在同一个TextView中多风格的文字效果

在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息。对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设...
  • u013035016
  • u013035016
  • 2016年04月08日 15:13
  • 1261

Android学习分享-常见控件01-TextView详解

Android 常见控件TextView
  • liu_hui2015
  • liu_hui2015
  • 2016年04月23日 19:37
  • 427

Android-TextView换行排版混乱-允许设置SpannableString

首先感谢两个网站提供的灵感: http://www.it165.net/pro/html/201405/14606.html 另一个忘了地址了,哪天找出来加上1.概述 ...
  • xiaoweiguoyuan
  • xiaoweiguoyuan
  • 2016年01月14日 15:10
  • 2797

Android SpannableString使用详解

使用TextView的过程中,有时候会需要将一串文本中的部分文字做特别的显示效果处理,比如加粗、改变颜色、加着重标识、超链接等等,我们可以通过多个TextView拼凑来实现,但如果需要特殊处理的内容在...
  • wenzhi20102321
  • wenzhi20102321
  • 2017年01月04日 11:36
  • 584

android SpannableString使用详解

androidlayoutbuttonimageencodingurl [java] view plaincopy import android.app.Activity; im...
  • u011382076
  • u011382076
  • 2013年09月26日 15:32
  • 1150

android:SpannableString使用详解

在android学习的时候经常发现TextView有时候不仅仅只代表普通文本,还要对其格式,事件方面的设置。 于是android有了这么一个类SpannableString.来对TextView做相关...
  • su20145104009
  • su20145104009
  • 2016年02月16日 19:39
  • 1796

Android中TextView通过SpannableString设置字体、大小、颜色、样式、超级链接

直接贴代码,不知道怎么使用的看注释吧。
  • lukejun1988
  • lukejun1988
  • 2014年05月15日 15:20
  • 10615

Android:SpannableString使用详解

在Android开发过程中,我们有时会需要TextView 显示各种格式的文本,包括字体颜色,大小,下划线,表情符号等等。对于这种需求,我们应该如何实现呢?答案是:SpannableString。 ...
  • nxiangbo
  • nxiangbo
  • 2016年04月12日 13:57
  • 427

Android开发之SpannableString详解

在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体、大小、颜色、样式、以及超级链接等。一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借...
  • fengyuzhengfan
  • fengyuzhengfan
  • 2014年08月09日 19:35
  • 9339
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android SpannableString使用详解
举报原因:
原因补充:

(最多只允许输入30个字)