alignItems:center阻止React Native中的flex行文本换行

Lan*_*tig 3 javascript react-native

出于某种原因,alignItems: center在容器视图上设置样式会导致弹性行内的文本停止换行,并且不会尊重容器视图padding.

这里的工作示例和代码:https://rnplay.org/apps/FsDXuQ

我尝试按照建议将flexDirection设置为column,使用flex:1或flexWrap,但唯一有效的方法是alignItems: center从容器视图中删除.

我不明白这里发生了什么.如果我想要怎么办

  1. 行元素,不占用屏幕的整个宽度,
  2. 中心,
  3. 里面有长文字,
  4. 哪个包裹?

谢谢.

小智 5

使用flex财产.防爆.<Text style={{ flex: 1}}>


Nad*_*bit 3

我们在我的公司遇到了同样的问题,据我所知,没有任何非黑客的方法可以解决这个问题。

我们处理的方法是从主容器中完全删除alignItems属性,并给容器一个flex:1属性。然后,我们对所需的任何子组件使用alignItems: 'center',而无需将样式传播到所有子组件。

我已经设置了一个我在这里讨论的示例,并粘贴了下面的代码。

'use strict';

var React = require('react-native');
var {
  AppRegistry,
  Image,
  StyleSheet,
  Text,
  View,
  Dimensions
} = React;

var width = Dimensions.get('window').width

var shortText = "Lorem ipsum dolor sit amet, consectetur adipis.";
var longText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sollicitudin ligula ut leo dictum, id elementum sapien faucibus. Nullam et feugiat neque";

var SampleApp = React.createClass({ 
  render: function() {
    return (
      <View style={styles.container}>
        <View style={ styles.alignCenter }>
            <Text>{shortText}</Text>
             </View>
        <Text/>
        <View style={{ flexDirection: 'row', flexWrap: 'wrap' }}>
          <Image source={{uri: "http://icons.iconarchive.com/icons/designbolts/free-male-avatars/128/Male-Avatar-icon.png"}} style={{height: 32, width: 32}}/>
          <View style={{ flex:1 }}>
          <Text >{longText}</Text>
          </View>
        </View>
       </View>
    );
  }
});

var styles = StyleSheet.create({
    container: {
    padding: 30,
    marginTop: 65,
    flexWrap: 'wrap',
    flex:1
    },
  alignCenter: {
    alignItems: 'center'
  }
})

AppRegistry.registerComponent('SampleApp', () => SampleApp);
Run Code Online (Sandbox Code Playgroud)