java换行rn_React Native Text控件动态检测换行的方法

本文介绍了如何在React Native中动态检测Text组件是否发生了换行。通过设置`numberOfLines`, `lineHeight`和`onLayout`属性,可以在文本超出指定宽度时调整容器高度并改变文本颜色来响应换行。对于嵌套Text的情况,只需在父Text上配置相应属性即可。
摘要由CSDN通过智能技术生成

Text控件是React Native最常用的几个控件之一了,因为几乎没有哪个应用不使用文案展示功能的。在展示文案时,我们常常需要限定Text显示区域的宽度,而文本出现超长时,要么选择截断,要么选择换行。当选择换行时,我们要对换行做出一些响应,比如我们需要因此调整所在容器的高度等。本文就演示一下如何动态检测Text控件出现了换行。

单个Text,无嵌套的情况

参照以下步骤:

设置numberOfLines属性,指定最大行数

设置lineHeight样式,指定行高

设置onLayout属性,并在回调函数中判断当前控件的总高度: 1倍的lineHeight为1行,2倍的行高为2行,依次类推。

import React, { Component } from 'react';

import {

AppRegistry,

Text,

View,

} from 'react-native';

export default class rnText extends Component {

state = {

color: 'blue' //初始蓝色

}

render() {

var self = this;

return (

numberOfLines={2}

onLayout={(e)=>{

if (e.nativeEvent.layout.height > 25 ) { //多于一行时改为红色

this.setState({

color: 'red'

})

}

}}

>

Welcome to React Native! Welcome to React Native! Welcome to React Native!

);

}

}

即主要借用了onlayout的回调。

onLayout function

当挂载或者布局变化以后调用,参数为如下的内容:

{nativeEvent: {layout: {x, y, width, height}}}

嵌套Text的情况

当Text中存在子Text控件时,子Text会继承父Text的style和其他属性,但是子Text可以重写从父辈继承来的样式,却不能重写其他属性,如lineHeight, fontSize。

例如:

numberOfLines={2}

lineHeight={30}

fontSize={15}

>

My name is React Native,

lineHeight={50}

fontSize={25}

>

and I'm always open source.

显示结果:

8a5dd9af3021

所以,在嵌套的状态下,我们只需要在父Text上设置好lineHeight, numberOfLines,并做好onLayout回调即可响应多行布局了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值