如何在水平和垂直方向中居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;
答案 0 :(得分:234)
从headline
'样式删除height
,justifyContent
和alignItems
。它将垂直居中文本。添加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>
这完全取决于你在做什么。您还可以查看关于主题的完整博客文章
答案 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)
您可以使用两种方法...
要使文本水平居中对齐,请应用此属性(textAlign:"center")
。
现在要使文本垂直对齐,请首先检查flex的方向。如果flexDirection是列应用属性(justifyContent:"center"
),而flexDirection是row则应用属性(alignItems : "center"
)。
要使文本居中,请应用相同的属性(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>
)
}