ReactNative:如何将文本居中?

如何将文本在ReactNative中水平和垂直居中?

我在rnplay.org中有一个示例应用程序,其中justifyContent =“ center”alignItems =“ center”不起作用:https : //rnplay.org/apps/AoxNKQ

文本应居中。为什么在文本(黄色)和父容器之间的顶部留有空白?

码:

'use strict';

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

var SampleApp = React.createClass({
  render: function() {
    return (
            <View style={styles.container}>
                <View style={styles.topBox}>
                    <Text style={styles.headline}>lorem ipsum{'\n'}ipsum lorem lorem</Text>

                </View>
                <View style={styles.otherContainer}>
                </View>
            </View>
    );
  }
});

var styles = StyleSheet.create({

    container: {
        flex: 1,
        flexDirection: 'column',
        backgroundColor: 'red',
        justifyContent: 'center',
        alignItems: 'center',
    },

    topBox: {
        flex: 1,
        flexDirection: 'row',
        backgroundColor: 'lightgray',
        justifyContent: 'center',
        alignItems: 'center',
    },
    headline: {
        fontWeight: 'bold',
        fontSize: 18,
    marginTop: 0,
        width: 200,
        height: 80,
    backgroundColor: 'yellow',
        justifyContent: 'center',
        alignItems: 'center',
    },

  otherContainer: {
        flex: 4,
        justifyContent: 'center',
        alignItems: 'center',
    backgroundColor: 'green',
    },


});

AppRegistry.registerComponent('SampleApp', () => SampleApp);

module.exports = SampleApp;
伽罗Tony小卤蛋2020/03/11 10:50:50

您可以alignSelf在文本组件上使用属性

{ alignSelf : "center" }
十三Stafan2020/03/11 10:50:50

简单添加

textAlign: "center"

在您的styleSheet中,就是这样。希望这会有所帮助。

编辑:“中心”

猪猪Stafan小卤蛋2020/03/11 10:50:50
textAlignVertical: "center"

是真正的魔力。

米亚神无2020/03/11 10:50:50

将这些样式设置为图像组件:{textAlignVertical:“ center”,textAlign:“ center”}

村村路易2020/03/11 10:50:50

已经回答了,但我想在此主题上添加更多内容,并根据您的用例添加不同的方法。

您可以adjustsFontSizeToFit={true}TextComponent 添加(当前未记录)以自动调整父节点内的大小。

  <Text adjustsFontSizeToFit={true} numberOfLines={1}>Hiiiz</Text>

您还可以在“文本组件”中添加以下内容:

<Text style={{textAlignVertical: "center",textAlign: "center",}}>Hiiiz</Text>

或者,您可以将以下内容添加到Text组件的父级中:

<View style={{flex:1,justifyContent: "center",alignItems: "center"}}>
     <Text>Hiiiz</Text>
</View>

或两者

 <View style={{flex:1,justifyContent: "center",alignItems: "center"}}>
     <Text style={{textAlignVertical: "center",textAlign: "center",}}>Hiiiz</Text>
</View>

或全部三个

 <View style={{flex:1,justifyContent: "center",alignItems: "center"}}>
     <Text adjustsFontSizeToFit={true} 
           numberOfLines={1} 
           style={{textAlignVertical: "center",textAlign: "center",}}>Hiiiz</Text>
</View>

这一切都取决于您在做什么。您还可以查看有关该主题的完整博客文章

https://medium.com/@vygaio/how-to-auto-adjust-text-font-size-to-fit-into-a-nodes-width-in-react-native-9f7d1d68305b