您的位置:首页 > 移动开发 > Android开发

Android—EditText/TextView使用SpannableString显示复合文本

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

1) ForegroundColorSpan 文本颜色

[java] view
plaincopyprint?

private void setForegroundColorSpan() {

SpannableString spanString = new SpannableString("前景色");

ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);

spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}

2) BackgroundColorSpan
文本背景色

[java] view
plaincopyprint?

private void setBackgroundColorSpan() {

SpannableString spanString = new SpannableString("背景色");

BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);

spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}

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

[java] view
plaincopyprint?

private void setStyleSpan() {

SpannableString spanString = new SpannableString("粗体斜体");

StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);

spanString.setSpan(span, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}

4) RelativeSizeSpan 相对大小

[java] view
plaincopyprint?

private void setRelativeFontSpan() {

SpannableString spanString = new SpannableString("字体相对大小");

spanString.setSpan(new RelativeSizeSpan(2.5f), 0, 6,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}

5) TypefaceSpan 文本字体

[html] view
plaincopyprint?

private void setTypefaceSpan() {

SpannableString spanString = new SpannableString("文本字体");

spanString.setSpan(new TypefaceSpan("monospace"), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanText);

}

6) URLSpan 文本超链接

[java] view
plaincopyprint?

private void addUrlSpan() {

SpannableString spanString = new SpannableString("超链接");

URLSpan span = new URLSpan("http://www.baidu.com");

spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}

7) ImageSpan 图片

[html] view
plaincopyprint?

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);

}

8) ClickableSpan 文本有点击事件

[html] view
plaincopyprint?

private TextView textView;

textView = (TextView)this.findViewById(R.id.textView);

String text = "显示Activity";

SpannableString spannableString = new SpannableString(text);

spannableString.setSpan(new ClickableSpan() {

@Override

public void onClick(View widget) {

Intent intent = new Intent(Main.this,OtherActivity.class);

startActivity(intent);

}

// 表示点击整个text的长度都有效触发这个事件

}, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(spannableString);

textView.setMovementMethod(LinkMovementMethod.getInstance());

9) UnderlineSpan 下划线

[html] view
plaincopyprint?

private void addUnderLineSpan() {

SpannableString spanString = new SpannableString("下划线");

UnderlineSpan span = new UnderlineSpan();

spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}

10) StrikethroughSpan 删除线

[html] view
plaincopyprint?

private void addStrikeSpan() {

SpannableString spanString = new SpannableString("删除线");

StrikethroughSpan span = new StrikethroughSpan();

spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}

11) SuggestionSpan 相当于占位符

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

13) RasterizerSpan 光栅效果

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

[html] view
plaincopyprint?

private void setAbsoluteFontSpan() {

SpannableString spannableString = new SpannableString("40号字体");

AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(40);

spannableString.setSpan(absoluteSizeSpan, 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

editText.append(spannableString);

}

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

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

[html] view
plaincopyprint?

private void setTextAppearanceSpan() {

SpannableString spanString = new SpannableString("文本外貌");

TextAppearanceSpan textAppearanceSpan = new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium);

spanString.setSpan(textAppearanceSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.append(spanString);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐