ReactNative:如何居中文字?

时间:2016-06-01 14:22:13

标签: reactjs flexbox react-native

如何在水平和垂直方向中居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;

19 个答案:

答案 0 :(得分:234)

headline'样式删除heightjustifyContentalignItems。它将垂直居中文本。添加textAlign: 'center',它会使文本水平居中。

  
  headline: {
    textAlign: 'center', // <-- the magic
    fontWeight: 'bold',
    fontSize: 18,
    marginTop: 0,
    width: 200,
    backgroundColor: 'yellow',
  }

答案 1 :(得分:38)

我已经回答了这个问题,我希望根据您的使用情况添加更多关于主题和不同的方法。

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

  <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

答案 2 :(得分:13)

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

答案 3 :(得分:7)

这是同时水平垂直对齐的示例

<View style={{width: 200, flexDirection: 'row',alignItems: 'center'}}>
     <Text style={{width: '100%',textAlign: 'center'}} />
</View>

答案 4 :(得分:7)

textAlignVertical: "center"

是真正的魔力。

答案 5 :(得分:3)

水平垂直中心对齐

<View style={{flex: 1, justifyContent: 'center',alignItems: 'center'}}>
     <Text> Example Test </Text>
</View>

答案 6 :(得分:3)

在父视图中设置

justifyContent:center

并在子视图中alignSelf:center

答案 7 :(得分:2)

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

{ alignSelf : "center" }

答案 8 :(得分:2)

好的,所以这是一个基本问题,不要担心这个 只需编写 <View> 组件并将其包裹在 <Text> 组件

<View style={{alignItems: 'center'}}>
<Text> Write your Text Here</Text>
</View>

alignitems:center 是用于在横轴上居中项目的道具


justifycontent:'center' 是用于在主轴上居中项目的道具

答案 9 :(得分:2)

简单添加

createUserWithEmailAndPassword()

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

编辑:“居中”

答案 10 :(得分:1)

                <Text style={{ fontSize: 25, textAlign: 'center' }} >A</Text>    
            </View>

答案 11 :(得分:1)

首先在父视图中添加 flex:1, justifyContent:“中心”, alignItems:'center'

然后在文本中添加 textAlign:“居中”

答案 12 :(得分:1)

 <View **style={{alignItems: 'center'}}**>

    <Text>Hello im centered text{this.props.name}!</Text>

      </View>

答案 13 :(得分:1)

只要页面中有Text组件,就需要设置Test组件的样式。

 <Text style={{ textAlign: 'center' }}> Text here </Text>

您无需添加任何其他样式属性,这是一种奇妙的魔力,它将使您在用户界面的中心放置文本。

答案 14 :(得分:0)

为文本提供高度和宽度不是一个好主意。我们应该使用视图组件作为Text组件的包装。要使文本居中,应使用以下样式属性 标题:{        fontWeight:'bold',        fontSize:18,        marginTop:0,        backgroundColor:“黄色”,        alignSelf:'居中',        textAlign:'居中'    },

相关文章: 6 Reasons Why You Should Create React Native Apps in 2020 Top React Native Development Companies in USA

答案 15 :(得分:0)

已使用

textalign:center

在视图

答案 16 :(得分:0)

您可以使用两种方法...

  1. 要使文本水平居中对齐,请应用此属性(textAlign:"center")。 现在要使文本垂直对齐,请首先检查flex的方向。如果flexDirection是列应用属性(justifyContent:"center"),而flexDirection是row则应用属性(alignItems : "center")。

  2. 要使文本居中,请应用相同的属性(textAlign:"center")。现在使其垂直对齐,使<Text> </Text>的高度等于view,然后应用property (textAlignVertical: "center")...

大多数可能会起作用...

答案 17 :(得分:0)

除了其他答案中提到的用例:

要使文本在 BottomTabNavigator 的特定用例中居中,请记住将showIcon设置为 false (即使TabNavigator中没有图标)。否则,文本将被推向Tab的底部。

例如:

const TabNavigator = createBottomTabNavigator({
  Home: HomeScreen,
  Settings: SettingsScreen
}, {
  tabBarOptions: {
    activeTintColor: 'white',
    inactiveTintColor: 'black',
    showIcon: false, //do this
    labelStyle: {
      fontSize: 20,
      textAlign: 'center',
    },
    tabStyle: {
      backgroundColor: 'grey',
      marginTop: 0,
      textAlign: 'center',
      justifyContent: 'center',
      textAlignVertical: "center"
    }
  }

答案 18 :(得分:0)

const styles = StyleSheet.create({
        navigationView: {
        height: 44,
        width: '100%',
        backgroundColor:'darkgray',
        justifyContent: 'center', 
        alignItems: 'center' 
    },
    titleText: {
        fontSize: 20,
        fontWeight: 'bold',
        color: 'white',
        textAlign: 'center',
    },
})


render() {
    return (
        <View style = { styles.navigationView }>
            <Text style = { styles.titleText } > Title name here </Text>
        </View>
    )

}