在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息。对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设置不同的字体风格以满足需求。

这里推荐的做法是使用Android.text.*;和android.text.style.*;下面的组件来实现RichText:也即在同一个TextView中设置不同的字体风格。对于某些应用,比如文本编辑,记事本,彩信,短信等地方,还必须使用这些组件才能达到想到的显示效果。

主要的基本工具类有android.text.Spanned; android.text.SpannableString; android.text.SpannableStringBuilder;使用这些类来代替常规String。SpannableString和SpannableStringBuilder可以用来设置不同的Span,这些Span便是用于实现Rich Text,比如粗体,斜体,前景色,背景色,字体大小,字体风格等等,android.text.style.*中定义了很多的Span类型可供使用。

这是相关的API的Class General Hierarchy:

因为Spannable等最终都实现了CharSequence接口,所以可以直接把SpannableString和SpannableStringBuilder通过TextView.setText()设置给TextView。

使用方法当要显示Rich Text信息的时候,可以使用创建一个SpannableString或SpannableStringBuilder,它们的区别在于SpannableString像一个String一样,构造对象的时候传入一个String,之后再无法更改String的内容,也无法拼接多个SpannableString;而SpannableStringBuilder则更像是StringBuilder,它可以通过其append()方法来拼接多个String:

SpannableString word = new SpannableString("The quick fox jumps over the lazy dog"); SpannableStringBuilder multiWord = new SpannableStringBuilder(); multiWord.append("The Quick Fox"); multiWord.append("jumps over"); multiWord.append("the lazy dog");

创建完Spannable对象后,就可以为它们设置Span来实现想要的Rich Text了,常见的Span有:

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----如果设置了此风格,会有一条线从中间穿过所有的字,就像被划掉一样对于这些Sytle span在使用的时候通常只传上面所说明的构造参数即可,不需要设置其他的属性,如果需要的话,也可以对它们设置其他的属性。SpannableString和SpannableStringBuilder都有一个设置上述Span的方法:

/** * Set the style span to Spannable, such as SpannableString or SpannableStringBuilder * @param what --- the style span, such as StyleSpan * @param start --- the starting index of characters to which the style span to apply * @param end --- the ending index of characters to which the style span to apply * @param flags --- the flag specified to control */ setSpan(Object what, int start, int end, int flags);

其中参数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所在的端点这里理解起来就好像数学中定义区间,开区间还是闭区间一样的。这里要重点说明下关于参数0,有很多时候,如果设置了上述的参数,那么Span会从start应用到Text结尾,而不是在start和end二者之间,这个时候就需要使用Flag 0。

在Textview中设置Drawable

类似调用方法如下:

1.在XML中使用android:drawableLeft="@drawable/icon"2.代码中动态变化Drawable drawable= getResources().getDrawable(R.drawable.drawable);/// 这一步必须要做,否则不会显示.drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());myTextview.setCompoundDrawables(drawable,null,null,null);也或参考另一个函数

public void setCompoundDrawablesWithIntrinsicBounds (Drawable left,Drawable top, Drawable right, Drawable bottom)

android常用字体代码,Android TextView设置字体风格多种组合相关推荐

  1. android+设置字体行高,android textview设置字体的行距和字间距

    android textview设置字体的行距和字间距 字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView ...

  2. android TextView设置字体颜色

    今天,简单讲讲如何设置TextView的字体颜色. 其实很简单,不过之前忘记了,所以还是记录,总结一下. TextView的字体设置方法: 1.直接通过配置文件设置 2.在Activity类中进行设置 ...

  3. html字体颜色 html中设置字体颜色代码 字体颜色获取

    html字体颜色 html中设置字体颜色代码 字体颜色获取 html字体颜色设置更改,html设置字体颜色代码方法有哪些 DIVCSS5为大家介绍在html中设置字体颜色方法,字体颜色修改方法,字体颜 ...

  4. idea html设置字体大小,intellij idea设置(字体大小、背景)

    1. 配置信息说明 Intellij Idea: 2017.2.5 2.具体设置 <1> 设置主题背景.字体大小 File---->Settings----->Appearan ...

  5. html设置表单里面字体格式为中文,html设置字体样式 html怎么设置字体样式 html字体怎么设置...

    分享网页的字体样式,这个只要平时最普通,最常用,最实用的网页字体样式font-family:'Microsoft YaHei'. 或许多年后再见,各自安静生活数年,在某个人潮拥挤的街头透过公交的玻璃窗 ...

  6. 怎么调大计算机浏览器内字体,电脑浏览器怎么设置字体大小

    电脑浏览器的字体是可以进行随意调整的,如果你赶紧字体不舒服可以设置下字体大小.下面由学习啦小编为大家整理了电脑浏览器怎么设置字体大小的方法,希望对大家有帮助! 电脑浏览器怎么设置字体大小 电脑浏览器设 ...

  7. android textview 设置字体,Android TextView设置字体风格

    在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息.对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设 ...

  8. android设置应用字体大小,在Android应用程序改变的TextView的字体大小从原始设置更改字体大小(Font size...

    我想在我的应用程序指定我自己的文字大小,但我有这样一个问题. 当我在设备设置中更改字体大小,我的应用程序的字体大小TextView也会改变. Answer 1: 其实,设置字体大小只影响大小sp . ...

  9. android 字体间间隔,TextView设置行间距、字体间距

    一.设置行间距 1.设置行间距:android:lineSpacingExtra,取值范围:正数.负数和0,正数表示增加相应的大小,负数表示减少相应的大小,0表示无变化 2.设置行间距的倍数:andr ...

  10. android+设置字体行高,TextView设置行间距、行高,以及字间距

    一. 设置TextView行间距.行高: Android系统中TextView有默认行间距,但是比较窄有的时候需要我们设置每行行间距. TextView为我们提供了相关设置属性android:line ...

最新文章

  1. 武汉计算机组成原理八校联盟考试,武汉理工大学《计算机组成原理》在线练习及考试题目.doc...
  2. [模板]tarjan求强连通分量
  3. php 服务器运行状态,检查服务器各种服务的运行状态
  4. [Wordpress]wp_dropdown_categories() 添加自定义的attribute(属性)
  5. Redis 从入门到起飞(上)
  6. php list 转tree,PHP 数组转树形结构
  7. Clean Code第三章函数
  8. java面试宝典 之 物流配送路径优化问题分析与算法解读
  9. PHP session有效期session.gc_maxlifetime
  10. Async Program 基本知识 (Process、Thread、Context Switch)
  11. 典型测试错误(英中文对照)
  12. Ubuntu 16.10安装之后必须做的16 件事
  13. 解决:关于启动Kafka一段时间后,进程自己停止运行的问题
  14. ViewPage的使用与介绍
  15. 解决 Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8
  16. java使用pdfbox将PDF转化为图片
  17. Android 程序员的技术栈大全(1),中高级Android面试题目汇总解答
  18. ISO26262功能安全 安全等级和量化指标
  19. 【详细】小程序发微博功能实现
  20. (资讯)华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年

热门文章

  1. $(function) ready onload 等区别
  2. C#-ShowWindow
  3. 网吧服务器最新方案,云更新2017版对网吧服务器配置要求
  4. 用聚宽量化炒股-3常用对象
  5. Forth 语言概要
  6. scum服务器里找不到车,人渣SCUM车辆机制介绍 人渣SCUM车辆为什么消失
  7. Android - BGAQRCode 扫描二维码生成二维码
  8. selenium上传附件(借助AutoIt识别Windows上传窗口)
  9. linux pipe命令,Linux入门教程:Linux下的pipe命令
  10. android桌面小部件开发