水平方向と垂直方向の両方で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;
headline
のスタイルからheight
、justifyContent
、およびalignItems
を削除します。テキストを中央揃えにします。 textAlign: 'center'
を追加すると、テキストが水平方向に中央揃えになります。
headline: {
textAlign: 'center', // <-- the magic
fontWeight: 'bold',
fontSize: 18,
marginTop: 0,
width: 200,
backgroundColor: 'yellow',
}
すでにこのトピックについてもう少し追加したいと思いますし、あなたのユースケースに応じてそれを実行するさまざまな方法を追加したいと思います。
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>
または3つすべて
<View style={{flex:1,justifyContent: "center",alignItems: "center"}}>
<Text adjustsFontSizeToFit={true}
numberOfLines={1}
style={{textAlignVertical: "center",textAlign: "center",}}>Hiiiz</Text>
</View>
それはすべてあなたがしていることによります。トピックに関する私のブログ記事全体をチェックアウトすることもできます。
これらのスタイルを画像コンポーネントに設定します。{textAlignVertical: "center"、textAlign: "center"}
これは 水平 および 垂直 位置合わせの例です。
<View style={{width: 200, flexDirection: 'row',alignItems: 'center'}}>
<Text style={{width: '100%',textAlign: 'center'}} />
</View>
textAlignVertical: "center"
本当の魔法です。
水平 および 垂直 中央揃え
<View style={{flex: 1, justifyContent: 'center',alignItems: 'center'}}>
<Text> Example Test </Text>
</View>
TextコンポーネントでalignSelf
プロパティを使用できます
{ alignSelf : "center" }
あなたのページのText
コンポーネントがあるところはどこでもTest
コンポーネントのスタイルを設定する必要があるだけです。
<Text style={{ textAlign: 'center' }}> Text here </Text>
他のスタイルプロパティを追加する必要はありません。これは、UIの中央にテキストを設定するという素晴らしい魔法です。
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>
)
}
<View **style={{alignItems: 'center'}}**>
<Text>Hello im centered text{this.props.name}!</Text>
</View>
他の回答に記載されているユースケースに加えて:
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"
}
}