Android实现RichText(富文本)不同Text样式

同一个TextView里面显示不同风格的文字。

类似这种。

主要的基本工具类有android.text.Spanned; android.text.SpannableString; android.text.SpannableStringBuilder;

使用这些类来代替常规String。SpannableString和SpannableStringBuilder可以用来设置不同的Span,这些Span便是

用于实现Rich Text,比如粗体,斜体,前景色,背景色,字体大小,字体风格等。

使用:

当要显示Rich Text信息的时候,可以使用创建一个SpannableString或SpannableStringBuilder,它们的区别在于

SpannableString像一个String一样,构造对象的时候传入一个String,之后再无法更改String的内容,也无法拼接

多个SpannableString;而SpannableStringBuilder则更像是StringBuilder,它可以通过其append()方法来拼接

多个String。接着,可以直接把SpannableString和SpannableStringBuilder通过TextView.setText()设置给TextView。

  1. finalTextView textWithString =(TextView) findViewById(R.id.text_view_font_1);
    String w ="The quick fox jumps over the lazy dog";
    int start = w.indexOf(‘q‘);
    int end = w.indexOf(‘k‘)+1;
    Spannable word =newSpannableString(w);
    word.setSpan(newAbsoluteSizeSpan(22), start, end,Spannable.SPAN_INCLUSIVE_INCLUSIVE);

setSpan参数:

AbsoluteSizeSpan(int size) ---- 设置字体大小,参数是绝对数值,相当于Word中的字体大小;

RelativeSizeSpan(float proportion) ---- 设置字体大小,参数是相对于默认字体大小的倍数,比如默认字体大小是x, 那么设置后的字体大小就是x*proportion,这个用起来比较灵活,proportion>1就是放大(zoom in), proportion<1就是缩小(zoom out);

ScaleXSpan(float proportion) ---- 缩放字体,与上面的类似,默认为1,设置后就是原来的乘以proportion,大于1时放大(zoon in),小于时缩小(zoom out) BackgroundColorSpan(int color) ----背景着色,参数是颜色数值,可以直接使用android.graphics.Color里面定义的常量,或是用Color.rgb(int, int, int);

ForegroundColorSpan(int color) ----前景着色,也就是字的着色,参数与背景着色一致 TypefaceSpan(String family) ----字体,参数是字体的名字比如“sans", "sans-serif"等;

StyleSpan(Typeface style) -----字体风格,比如粗体,斜体,参数是android.graphics.Typeface里面定义的常量,如Typeface.BOLD,Typeface.ITALIC等等。 StrikethroughSpan----如果设置了此风格,会有一条线从中间穿过所有的字,就像被划掉一样;

这里有个如果设置自定义的字体:要记得获取getStyle。

  1. privateTypeface mRegularTypeFace;
    mRegularTypeFace =Typeface.createFromAsset(getAssets(),"fonts/AvenirNext-Regular.ttf");
    word.setSpan(newStyleSpan(mBoldTypeFace.getStyle()), start, end,
    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    mMyLevel.setText(word);

参数what:

设置的Style span,start和end则是标识String中Span的起始位置,而 flags是用于控制行为的,通常设置为0或Spanned中定义的常量,

常用的有:

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含两端start和end所在的端点;

Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端点;

Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含两端start,但不包含end所在的端点;

Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含两端start和end所在的端点;

Linkify :

另外,也可以对通过TextView.setAutoLink(int)设置其Linkify属性,其用处在于,TextView会自动检查其内容,

会识别出phone number, web address or email address,并标识为超链接,可点击,点击后便跳转到相应的应用。

参考:http://blog.csdn.net/hitlion2008/article/details/6856780

时间: 2024-08-06 06:35:40

Android实现RichText(富文本)不同Text样式的相关文章

cocos2d-x改底层之RichText富文本换行

关于字符编码的知识,请参考前辈的博客:字符串和编码格式 这里使用的是cocos2dx的2.2.3版本,底层的RictText换行机制不能满足中文换行,需要改动.由于在3.x的版本已经优化了,而且以后的项目也会转到3.x的版本,所以这里只是做一个记录,对底层换行机制的思想做一个分析,仅供学习用. RichText的换行原理: 以文本换行为例(图片同样的道理),先用一个不带换行的label,算出该label的总长度L,然后和程序设定的宽w比较,w<L则一行足以,否则按w在L中比例来截取原字符串,作为

vue2.0 通过v-html指令编辑的富文本无法修改样式的原因

在最近的项目中遇到的问题:v-html编辑的富文本,无法在样式表中修改样式: <template> <div class="descBox" v-html='desc'></div> </template> <script> export default{ data(){ return { desc: "<p>I believe I can fly</p>" } } } </s

Cocos2d-x 3.0 RichText富文本

... if (this._super()) {             //init text             this._topDisplayLabel.setString("");             this._bottomDisplayLabel.setString("RichText");             var widgetSize = this._widget.getContentSize();                  

ng4.0 使用[innerHTML]动态插入的富文本如何设置样式

方法一:在css中设置样式 for CSS added to the component :host ::ng-deep mySelector { background-color: blue; } for CSS added to index.html body ::ng-deep mySelector { background-color: green; } 方法二:在ng生命周期中设置样式 使用方法二,我们得了解ng4的生命周期:经过测试,在ngAfterViewChecked方法中可以设

android 基于Fresco的富文本展示

由于应用中的数据大量采用富文本排版 所以需要客户端解析格式去显示 虽然WebView 可以做到 可是其中的图片下载并没有没有通过我们自己的缓存机制 在git上找到了一个基于picasso的RichText 替换成我们所使用的Fresco 运行起来 没有问题 比起WebView也要流畅很多 所以分享一下实现的代码 有问题 互相帮助改进 现存问题:不支持gif格式 talk is cheap show me the code /** * Created by sunche on 15/11/10.

【实践】简洁大方的summernote 富文本编辑器插件的用发——实例篇

实例化后的summernote 是这样子的 很漂亮对吧,而我做成页面效果是这样的: 先说说实例化一个summernote 的方法把,其实也不难,jq 选择器选择一个要变成富文本编辑器的元素然后调用 summernote 方法传入一个对象作为参数便可,参数是一个对象,属性就是这个富文本的一些样式属性,如下: 上面的属性是一些比较常用的属性,更多属性可以查看官方文档.特别注意一点的是callbacks 属性,它的作用是summernote 编辑器里面的一些功能要实现的回调方法,这里我的需求只是上传图

FastReport.Net使用:[15]富文本控件使用

富文本(Rich Text)控件用于显示Rtf格式的文本. 认识富文本编辑窗体 1.下图就是富文本的编辑窗体,乍一看就像Word一样,不过功能没有Word强大了.具体功能就不一一介绍了,用个Word的相信都会使用. 值得注意的是,编辑完后一定要点击"确定"按钮,不然就前功尽弃了. 报表数据显示 富文本支持的数据与文本控件一致,包含数据源的列.报表参数.汇总值.表达式等. 参见如下设计和预览效果. 几个注意点 在报表导出的时候,有些文档中富文本控件的内容会以图片格式显示.比如Word,r

android 记一次富文本加载之路

文章链接:https://mp.weixin.qq.com/s/69TRkmFL1aNuSqfw4ULMJw 项目中经常涉及到富文本的加载,后台管理端编辑器生成的一段html 代码要渲染到移动端上面,一种方法是前端做成html页面,放到服务器上,移动端这边直接webView 加载url即可,还有一种后台接口直接返回这段html富文本的,String类型的,移动端直接加载的:具体的需求按实际情况而定,webview直接加载url的就不说了,这里主要说说关于直接加载html的. 一段简单的html代

[寒江孤叶丶的Cocos2d-x之旅_33]RichTextEx一款通过HTML标签控制文字样式的富文本控件

RichTextEx一款通过HTML标签控制文字样式的富文本控件 原创文章,欢迎转载.转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 下载地址 Github链接 这个是干什么的 将例如以下文字内容 "<#F37C2A><font Helvetica><30>[世]<#3AB5B3><underLine true>寒江孤叶<underLine