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;
Ответы
Ответ 1
Из стиля headline
уберите height
, justifyContent
и alignItems
. Это будет центрировать текст по вертикали. Добавьте textAlign: 'center'
и текст будет textAlign: 'center'
горизонтально.
headline: {
textAlign: 'center', // <-- the magic
fontWeight: 'bold',
fontSize: 18,
marginTop: 0,
width: 200,
backgroundColor: 'yellow',
}
Ответ 2
Уже ответил, но я хотел бы добавить немного больше по теме и различные способы сделать это в зависимости от вашего варианта использования.
Вы можете добавить 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
Ответ 3
Установите эти стили в компонент изображения:
{ textAlignVertical: "center", textAlign: "center"
}
Ответ 4
textAlignVertical: "center"
настоящая магия
Ответ 5
это пример горизонтального и вертикального выравнивания одновременно
<View style={{width: 200, flexDirection: 'row',alignItems: 'center'}}>
<Text style={{width: '100%',textAlign: 'center'}} />
</View>
Ответ 6
Везде, где у вас есть Text
компонент на вашей странице, вам просто нужно установить стиль Text
компонента.
<Text style={{ textAlign: 'center' }}> Text here </Text>
вам не нужно добавлять какие-либо другие свойства стилей, это захватывающая магия, она установит текст в центре вашего интерфейса.
Ответ 7
Горизонтальное и вертикальное выравнивание по центру
<View style={{flex: 1, justifyContent: 'center',alignItems: 'center'}}>
<Text> Example Test </Text>
</View>
Ответ 8
Вы можете использовать свойство alignSelf
для компонента Text
{ alignSelf : "center" }
Ответ 9
В дополнение к случаям использования, упомянутым в других ответах:
Чтобы центрировать текст в конкретном случае использования 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"
}
}
Ответ 10
<View **style={{alignItems: 'center'}}**>
<Text>Hello im centered text{this.props.name}!</Text>
</View>
Ответ 11
Простое добавление
textAlign: "center"
в вашей таблице стилей, что это.
Надеюсь, это поможет.
редактировать: "центр"
Ответ 12
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>
)
}