Android -- SpannableString

简介:

SpannableString

Android通过SpannableString类来对EditText和TextView的指定文本进行处理。

ForegroundColorSpan

文本颜色

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

BackgroundColorSpan

文本背景色 

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

StyleSpan

字体样式:粗体、斜体等

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

RelativeSizeSpan

相对大小

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

TypefaceSpan

文本字体

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

URLSpan

文本超链接

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

ImageSpan

图片

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

ClickableSpan

文本有点击事件

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

UnderlineSpan

下划线

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

StrikethroughSpan

删除线

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

SuggestionSpan

占位符

MaskFilterSpan

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

RasterizerSpan

光栅效果

AbsoluteSizeSpan

绝对大小(文本字体)

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

DynamicDrawableSpan

设置图片(基于文本基线或底部对齐)

TextAppearanceSpan

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

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

我是天王盖地虎的分割线




本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/4666553.html,如需转载请自行联系原作者

相关文章
|
Android开发
Android 中实现特殊符号㎡ 的显示 使用SpannableString类来实现
Android 中实现特殊符号㎡ 的显示 使用SpannableString类来实现
54 0
|
XML Android开发 数据格式
Android 中使用SpannableString实现TextView文本超链接跳转功能
Android 中使用SpannableString实现TextView文本超链接跳转功能
247 0
|
Java Android开发
Android项目实战(一): SpannableString与SpannableStringBuilder
原文:Android项目实战(一): SpannableString与SpannableStringBuilder 前言: 曾经在一些APP中的一些类似“帮助”“关于”的界面看过一行文字显示不同的颜色的效果,如下效果: 本软件是一款高、大、上的社区类软件。
1197 0
|
Android开发
Android SpannableString(显示多样式文本)
SpannableString与String相似,是一种字符串类型,TextView可以直接设置Spannable为显示文本,不相同的是,SpannableString可以使用setSpan方法实现字符串各种形式风格的显示,并且可以设置指定的区间。
1155 0
|
Java Android开发
我的Android进阶之旅------>Android关于ImageSpan和SpannableString的初步了解
最近要实现一个类似QQ聊天输入框,在输入框中可以同时输入文字和表情图像的功能。如下图所示的效果: 为了实现这个效果,先去了解了一下ImageSpan和SpannableString的用法。
1336 0
|
Java Android开发
Android项目实战(一): SpannableString与SpannableStringBuilder(转)
前言: 曾经在一些APP中的一些类似“帮助”“关于”的界面看过一行文字显示不同的颜色的效果,如下效果: 本软件是一款高、大、上的社区类软件。 一般来说,这应该是由一个TextView来显示的,但是自己又不会实现,怎么办呢,只能一个颜色搞一个TextView连起来,形成上面的效果。
1468 0