如何水平居中在跨多行包装的React Native Flexbox文本

4
在React Native中,使用flexbox,我<Text>组件中的文本会水平(和垂直)居中。
这按预期工作——如果文本行足够短,不需要换行到下一行。
但是,当给定一个跨越多行的长文本字符串时,呈现的文本并没有水平居中!相反,换行的文本被对齐到左边缘。
如何强制换行文本水平居中?
这将水平居中shortText,但不适用于longText
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';

class Deck extends React.Component {

  render() {
    const shortText = 'Centered!';  
    const shortText = 'This very long line of text does NOT Center. Instead the wrapped text is aligned to the left edge of the container.';         

    return (
      <View style={styles.container}>
        <View>
          <Text style={styles.titleText}> {shortText} </Text>
          <Text style={styles.titleText}> {longText}  </Text>
        </View>   
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  titleText: {
    fontSize: 27,
    flexWrap: 'wrap', 
    alignSelf: 'center',
  },
});    

注意:我发现很多Stack Overflow的问题/答案和博客文章都是关于垂直居中和水平居中的,但是当文本不换行时。但是我找不到任何关于水平居中换行文本的内容。
另外请注意,React Native实现了"有限的文本样式继承", 与css标准略有不同。例如,<Text>仅从父Text组件继承colorfontSize属性,而不从View组件继承。此外,React Native的Flexbox布局实现与CSS标准略有不同。我不知道React Native的差异是否也会影响水平居中的换行文本。

2
textAlign: "center" 添加到 <Text> 的样式属性中是否起作用? - CRice
1个回答

9

@SherylHohman 好的,现在我看到你已经更新了代码。justifyContent: 'center' 怎么样? - Orlandster
文档已经移动,我提出了一个编辑建议来修复它们,但你的答案是正确的,并且对我有用。谢谢! - Mike Hardy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接