ReactNative : 텍스트를 가운데에 맞추는 방법?


212

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;


이것은 수평 중심이 아니다
itinance 2016 년

1
좋아, 그래서 : rnplay.org/apps/1hbnSA 업데이트
Cherniv

WAAAA ... textAlign? 나는 그것이 정말로 어리석은 짓이라는 것을 알고 있었다. ... 당신은 이것을 답으로 게시해야한다
itinance

답변:


356

에서 headline'스타일 제거 height, justifyContentalignItems. 텍스트를 세로로 가운데에 배치합니다. 추가 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>

또는 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


<Text style = {{textAlignVertical : "center", textAlign : "center",}}> Hiiiz </ Text>
Tushar Pandey

당신은 내 1.5 시간을 절약했습니다. 나는 똑같은 일을 시도했지만 textAlignVertical: "center", textAlign: "center" <Text /> 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>

가로 방향뿐만 아니라 세로 방향으로 <텍스트>를 중심으로 <텍스트>를 중심으로 한 솔루션 만 있습니다. 감사합니다!
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

, 메인 보정을 순환 별표 두 개를 사용하고 있기 때문에 그것을 개선 그러나 그것은 분명하지 않다 다른 부분은 혼동 제발
Frederiko 세자르


2

부모보기에서 설정

justifyContent:center

그리고 자식보기에서 alignSelf : center


열쇠는 낙타의 경우 justifyContentalignSelf
Siddharth

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.