如何使用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());//开始响应点击事件
相关文章推荐
- 如何使用tspan元素给SVG文本添加样式、定位
- 如何使用tspan元素给SVG文本添加样式、定位
- ng4.0 使用[innerHTML]动态插入的富文本如何设置样式
- 如何使用样式
- 如何修改博客园的标题,文本,表格等的显示样式
- 如何在VB6.0中创建和使用文本资源文件
- php提交表单时如何保留多个空格及换行的文本样式
- 如何使用jquery修改css中带有!important的样式属性
- 如何安装和使用纯文本编辑器 vi/vim
- 如何使用python修改文本文件
- 如何使用JS脚本从HTML中分离图片标签与文本,替换文本中指定的内容并加粗(原创)
- 写一个弹出样式的多行文本输入界面,如何选择呢?
- Flex中如何通过leading样式在一个text控件中设置文本铅框(text leading)的例子
- 如何使用分页和分页样式
- GridView使用技巧之:如何只绑定特定长度的文本?
- 安卓文本样式-Spannable的使用
- 移动APP开发――主流APP是如何来控制文本样式的?
- [WinForm每日一帖] 如何使用UltraToolTipManager为控件提供带样式的ToolTip
- 如何使用 awk 按模式筛选文本或字符串
- 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能