ReactNative - FlexGrow和FlexShrink布局

FlexGrow

flexGrow属性定义项目的放大比例。

默认为0,即如果存在剩余空间,也不放大。它和Android中的weight很像。

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。

如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

FlexShrink

flex-shrink属性定义了项目的缩小比例,默认为0,即空间不足的情况下,如果item按从左到右排序的话,最后一个item缩小。

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。

如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

image
image

实践:

比如要实现以下布局:

正常情况下的布局:
空间不足情况下的布局:(优先展示标签和距离)

示范代码如下:

 <View style={{
  height: 50,
  marginTop: 30,
  width: SCREEN_WIDTH - 100,
  flexDirection: 'row',
  alignItems: 'center',
  alignSelf: 'center',
  borderWidth: 2,
  borderColor: "#ff0000"
}}>
  <Text
    numberOfLines={1}
    style={{
      flexShrink: 1,  // 空间不足时,先被压缩
      backgroundColor: '#ff8500'
    }}>标题</Text>
  <Text
    numberOfLines={1}
    style={{
      marginLeft:10,
      backgroundColor: '#00ff00'
    }}>标签</Text>
  <Text
    numberOfLines={1}
    style={{
      flexGrow: 1,       //占据额外空间
      marginLeft:10,
      textAlign:'right',  //居右
    }}>距离</Text>
</View>
正常情况:
空间不足情况:
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,634评论 0 26
  • 前言 FlexBox是css3的一种新的布局方式,天生为解决布局问题而存在的它,比起传统的布局方式,我们使用Fle...
    zevei阅读 1,439评论 23 3
  • 几个问题 一个弹性布局可以由哪几方面决定? flex布局在web端与react-native端表现一样吗? rea...
    nimw阅读 1,928评论 0 4
  • 前言、Flex布局 Flex布局可谓是移动端H5上最重要的布局,基本没有之一。一些常用的功能和基本功能在此只做罗列...
    破晓霜林阅读 1,237评论 0 4
  • 年华似水 欢呼雀跃声中 新年第二天 早早起床,收拾停当,安然躺在沙发。 聆听… 屋外的西北风呼喊着 不肯安歇 它很...
    旧城xu阅读 348评论 0 1