Text有两个构造函数 new Text和new Text.rich。
- new Text:构建单一风格的文本,就是整段文本显示为统一的大小,颜色,样式等,而且不支持手势监听
- new Text.rich:构建不同风格文本的组合,而且支持手势监听
两个构造函数相同的属性说明:
- style:文本的样式。
TextStyle可设置属性有:- inherit:如果文本值为null,是否使用我们设置的TextStyle相关属性,默认值true。如果设置为false,当文本为null,则属性将恢复为默认值:白色,字体大小为10像素,字体为sans-serif字体。
- color:字体颜色
- fontSize:字体大小
- fontWeight:字体的粗细
- fontStyle:正常还是斜体
- letterSpacing:每个字符之间的间距,可设置负数,负数使字体之间更紧凑
- wordSpacing:单个空格的宽度,如果你两个字符之间间隔5个空格,则这两个字符之间的距离就是5 * wordSpacing。可设置负数,负数使字体之间更紧凑
- textBaseline:文本对齐方式
TextBaseline枚举值:- alphabetic:基于下图的alphabetic线对齐
-
ideographic:基于下图的ideographic线对齐
- height:文本高度的倍数,height * 文本高度 = Text的高度,文本垂直绘制起点向下偏移
- locale:本地化,指定当前文本采用什么语言
- foreground:字体的前景色,覆盖在字体上面
- background:字体的背景色
- shadows:文字阴影(相当于文字的影子)
- decoration:绘制下划线、上划线、删除线
- decorationColor:线的颜色
- decorationStyle:线的样式,实线、两条线,点线,短线条间隔、波浪线
- fontFamily:字体库
- package:当使用的字体库是其它包中内容时,指定字体库所在的包名称
textAlign:文字对齐方式
textDirection:文字方向,从左向右(TextDirection.ltr)还是从右向左(TextDirection.rtl)
locale:本地化,指定当前文本采用什么语言
softWrap:软换行,如果此值为false,除非你使用\n等显示的换行符,否则文本不会换行。如果为true,则会根据文本是否超出父控件长度而自动换行
overflow:文本超出父控件宽度的处理方式。
TextOverflow枚举值:
- clip:超出部分裁减掉,默认值
- fade:在尾部蒙上一层阴影
- ellipsis:在尾部显示‘...’
textScaleFactor:字体缩放倍数,比如你设置字体大小为20px,textScaleFactor为2,那么屏幕上最终显示40px大小的字体
maxLines:文本最多显示的行数
semanticsLabel:Text的描述文本
两个构造函数不同的属性说明:
new Text:接收一个data,这是一个字符串,没什么好说的
new Text.rich:接收一个textSpan。
下面列出TextSpan中可用的属性:
- text:要展示的文本
- style:文字样式,和前面style用法一致,只是前面是全局的,此处设置的是当前TextSpan及children(children没有设置自己的style或没有设置和parent style一致的属性,此时使用parent style中的相关属性)中text文本的风格。
- recognizer:注册手势监听
- children:孩子节点,是一个List<TextSpan>,可以无限嵌套,children中的text拼接在parent的text后面,且children根据位置顺序拼接。
发现了一个问题:
当Text文本在父控件中横向能够完全绘制出来时,即使纵向高度不够,文本也会被完全绘制出来,高度不会出现裁剪,只有在父控件中当横向不能够完全绘制出来时,纵向高度不够时才会被裁剪,猜测是Bug!