2015-04-09 4 views
43

Я хотел бы положить белый бар, который будет занимать всю ширину в нижней части экрана. Для этого я подумал об использовании позиционирования absolute с унаследованными параметрами flexbox.Absolute и Flexbox in React Native

С кодом, следующим за ним, отображается примерно this.

Вот мой код:

var NavigationBar = React.createClass({ 
    render: function() { 
    return(
    <View style={navigationBarStyles.navigationBar}> 
     //Icon 1, Icon 2... 
    </View> 
    ); 
    } 
}); 

var Main = React.createClass({ 
    render: function() { 
    return(
     <View style={mainStyles.container}> 
      <NavigationBar /> 
     </View> 
    ); 
    } 
}); 

var mainStyles = StyleSheet.create({ 
    container: { 
    flex: 1, 
    backgroundColor: '#456783', 
    } 
}); 

var navigationBarStyles = StyleSheet.create({ 
    navigationBar: { 
    backgroundColor: '#FFFFFF', 
    height: 30, 
    position: 'absolute', 
    flexDirection: 'row', 
    bottom: 0, 
    justifyContent: 'space-between' 
    }, 
}); 

Я новичок в моделировании в CSS, а не все свойства доступны в React-Native. Таким образом, любая помощь приветствуется, спасибо :)

ответ

74

Ok, решить мою проблему, если кто-то, проходя мимо вот ответ:

Просто пришлось добавить left: 0, и top: 0, к стилям, и да, я устала.

position: 'absolute', 
left:  0, 
top:  0, 
+6

Спасибо за размещение этого. И это похоже на высоту - вместо 'height: 100%', do 'top: 0, bottom: 0'. – Premasagar

+2

, но если вы хотите поместить панель внизу и полную ширину, вы должны добавить 'left: 0, right: 0' и не добавлять' top: 0', если вы установите 'top: 0' и' bottom : 0', он отобразит весь экран. –

+1

Как я могу сосредоточиться? Например, я хочу показать спиннер поверх моего компонента, и я хочу, чтобы spinner был абсолютным и центрированным? –

34

Первый шаг должен был бы добавить

position: 'absolute', 

затем, если вы хотите, чтобы элемент всю ширину, добавьте

left: 0, 
right: 0, 

затем, если вы хотите поместить элемент в нижней части , добавить

bottom: 0, 
// don't need set top: 0 

Если вы хотите, позиционировать элемент в верхней части, заменить bottom: 0 на top: 0

0

Это решение работает для меня:

tabBarOptions: { 
     showIcon: true, 
     showLabel: false, 
     style: { 
     backgroundColor: '#000', 
     borderTopLeftRadius: 40, 
     borderTopRightRadius: 40, 
     position: 'relative', 
     zIndex: 2, 
     marginTop: -48 
     } 
    } 
+0

Некоторые коды блоков кода действительно убирают это! –