您的位置:首页 > Web前端 > CSS

如何使用SpannableString自定义文本样式

2017-05-12 18:16 423 查看
//显示的内容
SpannableStringBuilder mBuilder = new SpannableStringBuilder();
//SpannableString的setSpan(Object what, int start, int end, int flags)
//what:样式,即:文字颜色、背景颜色、可点击的文本等等
//start:生效的字符起始下标
//end:生效的字符结束下标
//flags:共有4个设置如下
//Spanned.SPAN_INCLUSIVE_EXCLUSIVE 从起始下标到终了下标,包括起始下标
//Spanned.SPAN_INCLUSIVE_INCLUSIVE 从起始下标到终了下标,同时包括起始下标和结束下标
//Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 从起始下标到终了下标,但都不包括起始下标和结束下标
//Spanned.SPAN_EXCLUSIVE_INCLUSIVE 从起始下标到终了下标,包括结束下标
//1.给文字设置颜色(Color.parseColor("#1C86EE"))
SpannableString spannableString1 =
new SpannableString("给文字设置颜色(Color.parseColor(\"#1C86EE\"))");//设置内容
spannableString1.setSpan(
new ForegroundColorSpan(Color.parseColor("#1C86EE")),//设置样式
0,
spannableString1.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString1);//累加字符串
mBuilder.append("\n");//添加换行

//2.给文本添加下划线
SpannableString spannableString2 = new SpannableString("给文本添加下划线");//设置内容
spannableString2.setSpan(
new UnderlineSpan(),//设置样式
0,
spannableString2.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString2);//累加字符串
mBuilder.append("\n");//添加换行

//3.给文本添加删除线
SpannableString spannableString3 = new SpannableString("给文本添加删除线");//设置内容
spannableString3.setSpan(
new StrikethroughSpan(),//设置样式
0,
spannableString3.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString3);//累加字符串
mBuilder.append("\n");//添加换行

//4.将文本设置为斜体
SpannableString spannableString4 = new SpannableString("将文本设置为斜体");//设置内容
spannableString4.setSpan(
new StyleSpan(Typeface.ITALIC),//粗体则为Typeface.BOLD
0,
spannableString4.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString4);//累加字符串
mBuilder.append("\n");//添加换行

//5.设置文字颜色(Color.BLUE)
SpannableString spannableString5 = new SpannableString("设置文字颜色(Color.BLUE)");//设置内容
spannableString5.setSpan(
new ForegroundColorSpan(Color.BLUE),//设置样式
0,
spannableString5.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString5);//累加字符串
mBuilder.append("\n");//添加换行

//6.设置背景色
SpannableString spannableString6 = new SpannableString("设置背景色");//设置内容
spannableString6.setSpan(
new BackgroundColorSpan(Color.parseColor("#1C86EE")),//设置样式
0,
spannableString6.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString6);//累加字符串
mBuilder.append("\n");//添加换行

//7.设置文字大小为大2倍
SpannableString spannableString7 = new SpannableString("设置文字大小为大2倍");//设置内容
spannableString7.setSpan(
new RelativeSizeSpan(2f),//new ScaleXSpan(3.0f)设置水平方向上放大3倍
0,
spannableString7.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString7);//累加字符串
mBuilder.append("\n");//添加换行

//8.给文字设置上标
SpannableString spannableString8 = new SpannableString("给文字设置上标");//设置内容
spannableString8.setSpan(
new SuperscriptSpan(),//设置样式(设置下标:new SubscriptSpan())
3,
spannableString8.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString8);//累加字符串
mBuilder.append("\n");//添加换行

//9.给文字添加图片
SpannableString spannableString9 = new SpannableString("给文字添加图片:。");//设置内容
Drawable drawable = ContextCompat.getDrawable(MainActivity.this,R.mipmap.ic_launcher);
drawable.setBounds(0, 0, 42, 42);
ImageSpan imageSpan = new ImageSpan(drawable);
spannableString9.setSpan(
imageSpan,
spannableString9.length()-2, spannableString9.length(),
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString9);//累加字符串
mBuilder.append("\n");//添加换行

//10.给文字设置点击事件(点击效果还需要TexeView对象设置setMovementMethod才能响应点击事件)
SpannableString spannableString10 = new SpannableString("给文字设置点击事件");//设置内容
spannableString10.setSpan(
new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE);       //设置文件颜色
ds.setUnderlineText(true);      //设置下划线
}
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this,"点击事件",Toast.LENGTH_LONG).show();
}
},//设置样式
0,
spannableString10.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString10);//累加字符串
mBuilder.append("\n");//添加换行

//11.给文字设置超链接(点击效果还需要TexeView对象设置setMovementMethod才能响应点击事件)
SpannableString spannableString11 = new SpannableString("给文字设置超链接");//设置内容
spannableString11.setSpan(
new URLSpan("http://blog.csdn.net/u014608071"),//设置样式
0,
spannableString11.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString11);//累加字符串
mBuilder.append("\n");//添加换行

//12.给文字添加垂直的引用线
SpannableString spannableString12 = new SpannableString("给文字添加垂直的引用线");//设置内容
spannableString12.setSpan(
new QuoteSpan(Color.RED),//设置样式
0,
spannableString12.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString12);//累加字符串
mBuilder.append("\n");//添加换行

//13.居中对齐的段落
SpannableString spannableString13 = new SpannableString("居中对齐的段落");//设置内容
spannableString13.setSpan(
new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER),//设置样式
0,
spannableString13.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString13);//累加字符串
mBuilder.append("\n");//添加换行

//14.设置serif family
SpannableString spannableString14 = new SpannableString("设置serif family");//设置内容
spannableString14.setSpan(
new TypefaceSpan("serif"),//设置样式
0,
spannableString14.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString14);//累加字符串
mBuilder.append("\n");//添加换行

//15.通过style.xml的配置设置文字
SpannableString spannableString15 = new SpannableString("通过style.xml的配置设置文字");//设置内容
spannableString15.setSpan(
new TextAppearanceSpan(MainActivity.this, R.style.SpecialTextAppearance),//设置样式
0,
spannableString15.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString15);//累加字符串
mBuilder.append("\n");//添加换行
//

//16.设置文字大小为24dp size: 大小dip:false,size单位为px,true,size单位为dip(默认为false)
SpannableString spannableString16 = new SpannableString("设置文字大小为24dp");//设置内容
spannableString16.setSpan(
new AbsoluteSizeSpan(24, true),//设置样式
0,
spannableString16.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString16);//累加字符串
mBuilder.append("\n");//添加换行

//17.模糊字符集(BlurMaskFilter不支持硬件加速)
SpannableString spannableString17 = new SpannableString("模糊字符集(BlurMaskFilter不支持硬件加速)");//设置内容
spannableString17.setSpan(
new MaskFilterSpan(new BlurMaskFilter(1f, BlurMaskFilter.Blur.NORMAL)),//设置样式
0,
spannableString17.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString17);//累加字符串
mBuilder.append("\n");//添加换行

//18.浮雕字符集(BlurMaskFilter不支持硬件加速)
SpannableString spannableString18 = new SpannableString("浮雕字符集(BlurMaskFilter不支持硬件加速)");//设置内容
spannableString18.setSpan(
new MaskFilterSpan(new EmbossMaskFilter(new float[] { 1, 1, 1 }, 0.4f, 6, 3.5f)),//设置样式
0,
spannableString18.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mBuilder.append(spannableString18);//累加字符串

tv_main_hell.setText(mBuilder);
tv_main_hell.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件


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