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

1) ForegroundColorSpan 文本颜色

[java] view plain copy print ?
  1. privatevoidsetForegroundColorSpan(){
  2. SpannableStringspanString=newSpannableString("前景色");
  3. ForegroundColorSpanspan=newForegroundColorSpan(Color.BLUE);
  4. spanString.setSpan(span,0,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

2) BackgroundColorSpan 文本背景色

[java] view plain copy print ?
  1. privatevoidsetBackgroundColorSpan(){
  2. SpannableStringspanString=newSpannableString("背景色");
  3. BackgroundColorSpanspan=newBackgroundColorSpan(Color.YELLOW);
  4. spanString.setSpan(span,0,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

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

[java] view plain copy print ?
  1. privatevoidsetStyleSpan(){
  2. SpannableStringspanString=newSpannableString("粗体斜体");
  3. StyleSpanspan=newStyleSpan(Typeface.BOLD_ITALIC);
  4. spanString.setSpan(span,0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

4) RelativeSizeSpan 相对大小

[java] view plain copy print ?
  1. privatevoidsetRelativeFontSpan(){
  2. SpannableStringspanString=newSpannableString("字体相对大小");
  3. spanString.setSpan(newRelativeSizeSpan(2.5f),0,6,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  4. tv.append(spanString);
  5. }

5) TypefaceSpan 文本字体

[html] view plain copy print ?
  1. privatevoidsetTypefaceSpan(){
  2. SpannableStringspanString=newSpannableString("文本字体");
  3. spanString.setSpan(newTypefaceSpan("monospace"),0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. tv.append(spanText);
  5. }


6) URLSpan 文本超链接

[java] view plain copy print ?
  1. privatevoidaddUrlSpan(){
  2. SpannableStringspanString=newSpannableString("超链接");
  3. URLSpanspan=newURLSpan("http://www.baidu.com");
  4. spanString.setSpan(span,0,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }


7) ImageSpan 图片

[html] view plain copy print ?
  1. privatevoidaddImageSpan(){
  2. SpannableStringspanString=newSpannableString("");
  3. Drawabled=getResources().getDrawable(R.drawable.ic_launcher);
  4. d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
  5. ImageSpanspan=newImageSpan(d,ImageSpan.ALIGN_BASELINE);
  6. spanString.setSpan(span,0,1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  7. tv.append(spanString);
  8. }

8) ClickableSpan 文本有点击事件

[html] view plain copy print ?
  1. privateTextViewtextView;
  2. textView=(TextView)this.findViewById(R.id.textView);
  3. Stringtext="显示Activity";
  4. SpannableStringspannableString=newSpannableString(text);
  5. spannableString.setSpan(newClickableSpan(){
  6. @Override
  7. publicvoidonClick(Viewwidget){
  8. Intentintent=newIntent(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 下划线

[html] view plain copy print ?
  1. privatevoidaddUnderLineSpan(){
  2. SpannableStringspanString=newSpannableString("下划线");
  3. UnderlineSpanspan=newUnderlineSpan();
  4. spanString.setSpan(span,0,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

10) StrikethroughSpan 删除线

[html] view plain copy print ?
  1. privatevoidaddStrikeSpan(){
  2. SpannableStringspanString=newSpannableString("删除线");
  3. StrikethroughSpanspan=newStrikethroughSpan();
  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 绝对大小(文本字体)

[html] view plain copy print ?
  1. privatevoidsetAbsoluteFontSpan(){
  2. SpannableStringspannableString=newSpannableString("40号字体");
  3. AbsoluteSizeSpanabsoluteSizeSpan=newAbsoluteSizeSpan(40);
  4. spannableString.setSpan(absoluteSizeSpan,0,5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. editText.append(spannableString);
  6. }

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

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

[html] view plain copy print ?
  1. privatevoidsetTextAppearanceSpan(){
  2. SpannableStringspanString=newSpannableString("文本外貌");
  3. TextAppearanceSpantextAppearanceSpan=newTextAppearanceSpan(this,android.R.style.TextAppearance_Medium);
  4. spanString.setSpan(textAppearanceSpan,0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  5. tv.append(spanString);
  6. }

更多相关文章

  1. Android中动态设置多继承Style/Theme
  2. Android(安卓)控件之八:AutoCompleteTextView自动完成文本框
  3. Android中倒计时代码
  4. android > TabActivity ( actvity 切换 iframe)
  5. 安卓开发09:常用控件-TextView文本展示
  6. android EditText 设置输入的文字的格式方式
  7. 改变tab中indicator文本的颜色
  8. Android(安卓)UI设计:TextView与EditText
  9. Android中TextView富文本适配问题

随机推荐

  1. Android启动界面实现
  2. Android 读取Resources和Assets
  3. android 重力传感器的使用
  4. android获取手机序列号
  5. Android(安卓)HandlerThread 消息循环机
  6. 汇总各种Android 蓝牙各种UUID
  7. android JNI处理图片的例子
  8. anroid studio更新中出现The Android(安
  9. Android NDK 开发的栈错误调试
  10. Android(安卓)Material Design(一)史上最全