这个类是为文本标记和分离作用的,不可改变的(如果想改变内容的话,可以使用spannablestringbuilder)。
它是直接的继承的object,因为是对文本的操作,特性与string有许多的相似。
一般,我们需要对文字加点一些特别的效果的话,可以使用它,下面是简单的使用。
public class TestSpannableString extends Activity { private SpannableString span; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.acy_testfenghuangimg); initView(); } public void initView() { tv = (TextView) findViewById(R.id.tv_txt); span = new SpannableString("跳转页面"); MyClikcSpan myClikcSpan = new MyClikcSpan(this); // 超链接 // URLSpan urlspan=new URLSpan("tel:147852369"); // span.setSpan(urlspan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 文字背景颜色 // BackgroundColorSpan backspan=new // BackgroundColorSpan(color.holo_blue_bright); // span.setSpan(backspan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 文字背景 // ForegroundColorSpan forespan=new ForegroundColorSpan(Color.DKGRAY); // span.setSpan(forespan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 字体大小 // AbsoluteSizeSpan absspan=new AbsoluteSizeSpan(36); // span.setSpan(absspan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 粗体,斜体 // StyleSpan stylespan=new StyleSpan(Typeface.BOLD_ITALIC); // span.setSpan(stylespan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 删除线 // StrikethroughSpan strikespan=new StrikethroughSpan(); // span.setSpan(strikespan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 下划线 // UnderlineSpan underspan = new UnderlineSpan(); // span.setSpan(underspan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //图片 // Drawable d = getResources().getDrawable(R.drawable.ic_launcher); // d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); // ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); // span.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 添加点击事件 span.setSpan(myClikcSpan, 0, 4, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); // 换行 tv.setText("\n"); tv.append(span); // 可点击状态 tv.setMovementMethod(LinkMovementMethod.getInstance()); } //添加文字的点击 class MyClikcSpan extends ClickableSpan { private Context context; public MyClikcSpan(Context context) { this.context = context; } @Override public void onClick(View widget) { // TODO Auto-generated method stub Toast.makeText(context, "hello click", 1000).show(); } } }