2017-02-02 5 views
0

Я просто хочу, чтобы значок находился слева, а текст был в центре.React-Native Align Issue

У меня есть эта структура:

<View style={styles.mainContainer}> 
    <Error screen={screen}/> 
    <View style={styles.headerContainer}> 
     {back && 
      <Icon 
       raised 
       name='arrow-back' 
       onPress={ onBackPress } 
       containerStyle={styles.back}/> 
     } 
     <Text style={styles.header}>{ title }</Text> 
    </View> 
    <View style={styles.contentContainer}> 
     { children } 
    </View> 
    </View> 

Любопытное, как это:

-> MainContainer

-> HeaderContainer

---- кнопка> Назад

----> Название

mainContainer: { 
    flex: 1, 
    flexDirection: 'column', 
    alignItems: 'stretch', 
    justifyContent: 'flex-start' 
    }, 
    headerContainer: { 
    flex: 1, 
    padding: 10, 
    flexDirection: 'row', 
    // ommited for clarity 
    }, 
    back: { 
    alignSelf: 'flex-start' 
    }, 
    header: { 
    fontSize: 24, 
    alignSelf: 'center' 
    }, 

Но он не работает, как она производит: enter image description here

Я также попытался добавить в HeaderContainer:

justifyContent: 'space-between', 

и пустой <View />, но результат не хорошо:

enter image description here

Как вы можете видеть, это не центр действительно.

Редактировать Производит:

enter image description here

Это на самом деле не в центре, потому что мы ставим воображаемую thrid элемент. Можем ли мы это сделать только с двумя элементами? Один в старте и другой по центру?

Почему это не представляется возможным?

ответ

0

Попробуйте следующее:

<View style={{ flex: 1, flexDirection: 'row', alignItems: 'center' }}> 
    <View style={{ flex: 1 }}> 
    {leftContent} 
    </View> 
    <View style={{ flex: 1, alignItems: 'center' }}> 
    {centerContent} 
    </View> 
    <View style={{ flex: 1, alignItems: 'flex-end' }}> 
    {rightContent} 
    </View> 
</View> 

Не забудьте установить textAlign: 'center' если центр компонента <Text> или textAlign: 'right', если правая составляющая Text.

+0

Спасибо binchik, я обновил свой вопрос. –

+0

@MarcoNoronha Вы добавили 'textAlign: center' в' header'? – binchik

+0

Да @binchik. Я не забыл твою записку. –

0

Поместите свой значок и текст в отдельных видах и Asign использование биоэтанола к нему что-то вроде этого

<View style={styles.mainContainer}> 
     <Error screen={screen}/> 
     <View style={styles.headerContainer}> 
      <View style={{flex:.3,alignSelf:'flex-start}}>  
       {back && 
        <Icon 
        raised 
        name='arrow-back' 
        onPress={ onBackPress } 
        containerStyle={styles.back}/> 
       } 
      </View> 
      <View style={{flex:.7,alignSelf:'flex-end',alignItems:'center'}}>  
       <Text style={styles.header}>{ title }</Text> 
      </View>  
    </View> 
    <View style={styles.contentContainer}> 
     { children } 
    </View> 
    </View> 

Я думаю, что это Шоуда исправить эту проблему

+0

Спасибо за ваш ответ. Почти. Текст не центрируется с 100% ширины. Это своего рода то, что я сделал с обходным путем «между пробелами». :(Кроме того, это прерывается, когда нет кнопки. –