React-Native 之 Text的使用

前言

  • 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习

  • 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所偏差,在学习中如果有错会及时修改内容,也欢迎万能的朋友们批评指出,谢谢

  • 文章第一版出自简书,如果出现图片或页面显示问题,烦请转至 简书 查看 也希望喜欢的朋友可以点赞,谢谢

Text 组件介绍


  • 在 React Native 用于显示文本的组件就是 Text,和iOS中的 UIlabel,Android中的 TextView类似,专门用来显示基本的文本信息,处理基本的显示布局外,还可以进行嵌套显示,设置样式,已经事件处理(如:点击事件)

Text 组件常用的属性和方法


  • color:字体颜色

        // 字体颜色
        color:'blue'
    
    

    效果:

字体颜色
  • numberOfLines:设置 Text 显示文本的行数,如果显示的内容超过行数,默认其余的文本信息不再显示

        render() {
            return (
                <View style={styles.container}>
                    <Text style={styles.textStyle} numberOfLines={3}>雨泽Forest雨泽Forest雨泽Forest雨泽Forest雨泽Forest雨泽Forest雨泽Forest雨泽Forest雨泽Forest</Text>
                </View>
            );
        }
    
    

    效果:


    设置行数
  • fontSize:字体大小

        // 字体大小
        fontSize:30
            
    

    效果:


    文字大小
  • fontFamily:字体名称

        // 字体类型
        fontFamily:'Georgia'
    
    

    效果:


    字体类型
  • fontStyle('normal', 'italic'):字体风格

        // 字体风格
        fontStyle:'italic'
    
    

    效果:


    字体风格
  • fontWeight('normal', 'bold', '100 ~ 900'):指定字体的粗细。大多数字体都支持'normal'和'bold'值。并非所有字体都支持所有的数字值。如果某个值不支持,则会自动选择最接近的值

        // 字体粗细
        fontWeight:('bold', '700')
    
    

    效果:


    字体粗细
  • textShadowOffset(width: number, height: number):设置阴影效果

  • textShadowColor:阴影效果颜色

        // 阴影
        textShadowOffset:{width:3, height:5},
        // 阴影颜色
        textShadowColor:'black'
    
    

    效果:


    阴影效果和阴影颜色
  • textShadowRadius:阴影效果圆角(值越大阴影越模糊)

        // 阴影圆角
        textShadowRadius:3
    
    

    效果:


    阴影圆角
  • letterSpacing:字符间距

        // 字符间距
        letterSpacing:5
    
    

    效果:


    字符间距
  • lineHeight:行高

        // 行高
        lineHeight:25
    
    

    效果:


    行高
  • textAlign('auto', 'left', 'right', 'center', 'justify'):文本对齐方式

    • auto


        // 文本对齐方式
        textAlign:'auto'
    
    

    效果:


    auto
    • left


        // 文本对齐方式
        textAlign:'left'
    
    

    效果:


    left
    • right


        // 文本对齐方式
        textAlign:'right'
    
    

    效果:


    right
    • center


        // 文本对齐方式
        textAlign:'center'
    
    

    效果:


    center
    • justify


        // 文本对齐方式
        textAlign:'justify'
    

    效果:


    justify
  • textDecorationLine('none', 'underline', 'line-through'):横线位置

    • none:没有横线
    • underline:


        // 横线
        textDecorationLine:'underline'
    
    

    效果:


    underline
    • line-through:


        // 横线
        textDecorationLine:'line-through'
    
    

    效果:


    line-through
  • textDecorationStyle('solid', 'double', 'dotted', 'dashed'):线风格

    • solid


        // 横线风格
        textDecorationStyle:'solid'
    
    

    效果:


    solid
    • double


        // 横线风格
        textDecorationStyle:'double'
    
    

    效果:


    double
    • dotted


        // 横线风格
        textDecorationStyle:'dotted'
    
    

    效果:


    dotted
    • dashed


        // 横线风格
        textDecorationStyle:'dashed'
    
    

    效果:


    dashed
  • textDecorationColor:线的颜色

        // 线的颜色
        textDecorationColor:'black',
    
    

    效果:


    线的颜色
  • allowFontScaling:控制字体是否要根据iOS的“文本大小”辅助选项来进行缩放

  • adjustsFontSizeToFit:指定字体是否随着给定样式的限制而自动缩放

  • minimumFontScale:当adjustsFontSizeToFit开启时,指定最小的缩放比(即不能低于这个值)。可设定的值为0.01 - 1.0

  • suppressHighlighting:当为true时,如果文本被按下,则没有任何视觉效果。默认情况下,文本被按下时会有一个灰色的、椭圆形的高光

  • selectable:决定用户是否可以长按选择文本,以便复制和粘贴

        render() {
            return (
                <View style={styles.container}>
                    <Text style={styles.textStyle}
                        selectable={true}
                    >
                        雨泽Forest
                    </Text>
                </View>
            );
        }
    
    

    效果:


    selectable.gif
  • testID:用来在端到端测试中标记这个视图

  • onPress:当文本发生点击的时候调用该方法

        render() {
            return (
                <View style={styles.container}>
                    <Text style={styles.textStyle}
                        onPress={()=>{alert('点击')}}
                    >
                        雨泽Forest
                    </Text>
                </View>
            );
        }
    
    

    效果:


    onPress.gif
  • onLongPress:当文本被长按以后调用此回调函数(参考onPress)

  • onLayout:当挂载或者布局变化以后调用(参数为:{nativeEvent: {layout: {x, y, width, height}}})(参考onPress)

Text 使用


  • 视图部分

        render() {
            return (
                <View style={styles.container}>
                    <Text style={styles.textStyle}>雨泽Forest</Text>
                </View>
            );
        }
    
    
  • 样式部分

        var styles = StyleSheet.create({
            container: {
                flex: 1,
                justifyContent: 'center',
                alignItems: 'center',
                backgroundColor: 'green',
            },
    
            textStyle: {
                // 背景色
                backgroundColor:'yellow',
                // 字体大小
                fontSize:30,
                // 下划横线
                textDecorationLine:'underline'
            }
    
        });
    
    

    效果:

Text 组件的嵌套使用


  • 视图部分

        var test = React.createClass({
            render() {
                return (
                    <View style={styles.container}>
                        <Text style={styles.textStyle} numberOfLines={3}>
                        雨泽
                        <Text style={{color:'orange'}}>
                                Forest
                        </Text>
                        </Text>
                    </View>
                );
            }
        });
    
    
  • 样式部分

        var styles = StyleSheet.create({
            container: {
                flex: 1,
                justifyContent: 'center',
                alignItems: 'center',
                backgroundColor: 'green',
            },
    
            textStyle: {
                // 字体颜色
                color:'blue',
                // 字体大小
                fontSize:30
            }
    
        });
    
    

    效果:


    嵌套使用

Text 组件中样式的继承


  • 在 React Native 中是没有样式继承这种说法的,但对于 Text 元素里边的 Text 元素,其实是可以继承的,至于是单继承还是多继承,我们可以来试验一下

    • 视图部分


        var test = React.createClass({
            render() {
                return (
                    <View style={styles.container}>
                        <Text style={styles.textStyle} numberOfLines={3}>
                            <Text>
                                <Text>雨泽Forest</Text>
                            </Text>
                        </Text>
                    </View>
                );
            }
        });
    
    
    • 样式部分


        var styles = StyleSheet.create({
            container: {
                flex: 1,
                justifyContent: 'center',
                alignItems: 'center',
                backgroundColor: 'green',
            },
    
            textStyle: {
                // 字体颜色
                color:'blue',
                // 字体大小
                fontSize:30
            }
    
        });
    
    

    效果:


    样式继承关系
  • 通过试验我们可以看出,文字控制类的属性也是多继承的,和 CSS 是一样的,而且会取与自己最近的属性归自己所用,也就是说属性可覆盖

很多朋友私信我说更新太慢,在这里说声抱歉,因为接近春节,公司事情比较多,还请朋友们见谅,喜欢我的文章的可以点点关注,有什么不清楚或者建议可以评论或留言,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容