ReactNative:テキストを中央揃えにする方法は?


212

水平と垂直の両方でReactNativeのテキストを中央揃えにする方法は?

justifyContent = "center"およびalignItems = "center"が機能しないrnplay.orgにサンプルアプリケーションがあります。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;

このように:rnplay.org/apps/1hbnSA
Cherniv 2016年

これは水平方向に中央
揃えされて

1
わかりましたので、これ:rnplay.org/apps/1hbnSA、更新
Cherniv

WAAAA ... textAlign?私はそれが本当に愚かなことを知っていました...あなたはこれを回答として投稿するべきです

回答:


356

からheadline'スタイル削除heightjustifyContentそしてalignItems。テキストを垂直方向に中央揃えにします。追加するtextAlign: 'center'と、テキストが水平方向に中央揃えになります。

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

16
動作しませんwidthあなたがそれをラップしない限り<View>justifyContent: 'center', alignItems: 'center',
ライアン・ウォーカー

59

すでに回答済みですが、トピックとユースケースに応じてそれを行うさまざまな方法についてもう少し追加したいと思います。

adjustsFontSizeToFit={true}(現在文書化されていない)Textコンポーネントに追加して、親ノード内のサイズを自動調整できます。

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

テキストコンポーネントに以下を追加することもできます。

<Text style={{textAlignVertical: "center",textAlign: "center",}}>Hiiiz</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>

それはすべてあなたが何をしているかに依存します。トピックに関する私の完全なブログ投稿をチェックアウトすることもできます

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


これは想定されているはずです:<Text style = {{textAlignVertical: "center"、textAlign: "center"、}}> Hiiiz </ Text>
Tushar Pandey

あなたは私の1.5時間を節約しました。私は同じことをしようとしていましたが、この回答が:textAlignVertical: "center", textAlign: "center" Text as Component Styleであるまではできませんでした。
ganeshdeshmukh

textAlignVerticalはAndroidのみです。これらの解決策はどれも、テキストを垂直方向に配置していません。水平方向にのみ配置しています。
sudo

14

これらのスタイルを画像コンポーネントに設定します:{textAlignVertical: "center"、textAlign: "center"}



9

これは、水平方向垂直方向の位置合わせを同時に行う例です

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

インラインスタイルは{{double-curly-braces}}で囲む必要があるというヒントをありがとう。
MarkHu

6

水平および垂直の中央揃え

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

水平方向だけでなく垂直方向にも<View>内の<Text>を中央に配置するという点で私のために機能した唯一のソリューション。ありがとうございました!
RuntimeError

4

alignSelfテキストコンポーネントのプロパティを使用できます

{ alignSelf : "center" }

4

Textページのどこにコンポーネントがあっても、Textコンポーネントのスタイルを設定する必要があります。

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

他のスタイリングプロパティを追加する必要はありません。これは、UIの中央にテキストを設定する素晴らしい魔法です。


2

単純な追加

textAlign: "center"

あなたのstyleSheetではそれだけです。これがお役に立てば幸いです。

編集:「中央」


2

次のプロパティを使用できます。 {{alignItems: 'center'}}

<View style={{alignItems: 'center'}}>
 <Text>Hello im centered text{this.props.name}!</Text>
</View>

1
これが問題の解決策である場合でも、私たち全員が学習できるように、もう少し説明を追加してください。
harmonica141

2つのアスタリスクを使用してメイン修正を循環させていますが、明確ではなく、他の部分が混乱しているため、改善してください
Frederiko Cesar



1

他の回答で言及されている使用例に加えて:

BottomTabNavigatorの特定の使用例でテキストを中央揃えにするには、(TabNavigatorにアイコンがない場合でも)showIconをfalseに設定することを忘れないでください。それ以外の場合、テキストはタブの下部に向かってプッシュされます。

例えば:

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"
    }
  }

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>
    )

}

0

最初に親ビューにflex:1、justifyContent: 'center'、alignItems: 'center'を追加します

次に、テキストにtextAlign: 'center'を追加します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.