React Native Text组件
Text元素在布局上不同于其它组件:在Text内部的元素不再使用flexbox布局,而是采用文本布局。这意味着Text内部的元素不再是一个个矩形,而可能会在行末进行折叠。
基于这个特性,开发者可以只设定Text组件样式的宽度,而不设置它的高度,Text组件的高度将由组件的宽度、需要显示的字符串的长度、字体大小共同动态确定。
属性
通用样式键设置
- fontFamily
- fontStyle
- fontSize
- fontWeight
- textAlign
- textDecorationLine
- lineHeight
- numberOfLines
- onLongPress
- Selectable
三个与阴影有关的样式
- textShadowOffset
- textShadowRadius
- textShadowColor
ios 平台独有样式键设置
- fontVariant
- letterSpacing
- writingDirection
- textDecorationStyle
- textDecorationColor
- adjustsFontSizeToFit
- allowFontScaling
- minimumFontScale
- suppressHighlighting
Android 平台独有样式键设置
- includeFontPadding
- selectionColor
- textAlignVertical
- textBreakStrategy
cllipsizeMode时字符串类型属性。它的取值为:head,middle,tail,clip.它决定了当Text组件无法全部显示需要显示的字符串时,如何用省略号进行修饰。
需要注意的是,ellipsizeMode属性需要与numberOfLines属性配合使用,numberOfLines属性值被赋予1,但开发者可以视需要赋给它任意正整数。
依照官方文档,ellipsizeMode是一个跨平台属性。但截止RN0.40,只有ios平台支持了前三种属性。android平台,所有取值效果都与clip属性相同。
Text组件的嵌套
在嵌套的Text组件中,子Text组件将继承它的父Text组件的样式。子Text组件不能覆盖从父Text组件继承而来的样式,只能增加父Text组件没有指定的样式。
Text居中显示
需要在Text组件外套一层view才能设置Text组件的水平垂直居中
在字符串中插入图像
在React Native 0.20.0 版本后,开发者可以在Text组件中更方便的插入图像
Text组件在两个平台上的不同表现
只指定fontSize,不指定height
在这种情况下,Text组件在两个平台上显示都正常。
ios: 两个汉字上、下方富余的空间基本相等;
android: 上方富余空间的高度大概是下方空间的1.5倍。除非字体比较大,否则用户不容易发现。
只指定height, 不指定fontSize
在这种极端情况下,不论height是何值,fontSize的值都是13。
fontSize 等于 height
ios: 字体偏下,下方部分显示不全
android:字体比ios还偏下,上方留有空间,下方显示不全。
这种情况下,在Text组件样式中加入 padding: 0 或者 paddingTop: 0 或者 paddingBottom: 0,也不会有任何变化。
height 大于 fontSize
ios: 当height等于fontSize的1.2倍时,显示效果与只指定fontSize,不指定height类似;如果height继续增大,此时Text组件中显示字符的上方空间保持不变,而下方空间会随着height增大而增大。
android: 当height等于fontSize的1.35倍时,显示效果与只指定fontSize,不指定height类似;如果height继续增大,此时Text组件中显示字符的上方空间保持不变,而下方空间会随着height增大而增大。
边框在两个平台上的不同表现
给Text组件增加border属性,android不显示边框。兼容两端的话,需要在Text组件外套一层view,然后设置相关border属性。