ReactNativeのAbsoluteとFlexbox


95

画面下部に全幅を占める白いバーを配置したいと思います。そのためにabsolute、継承されたflexboxパラメータでポジショニングを使用することを考えました。

次のコードで、それはのようなものレンダリングこれを

これが私のコードです:

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で使用できるわけではありません。だからどんな助けもありがたいです、ありがとう:)

回答:


157

わかりました、私の問題を解決しました、誰かがここを通りかかっているなら、答えは:

ただスタイルに追加する必要がleft: 0,ありtop: 0,ました、そしてはい、私は疲れています。

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

10
投稿していただきありがとうございます。そして、それは高さについても同様のようです-の代わりにheight:100%、してくださいtop:0, bottom:0
Premasagar 2015

4
ただし、バーを下に全幅配置する場合は、を追加する必要があります。を追加しleft:0, right:0ないでください。とtop:0を設定するtop:0bottom:0、全画面表示になります。
Spark.Bao 2016

1
どうすれば中央に配置できますか?たとえば、コンポーネントの上にスピナーを表示したいのですが、スピナーを絶対的で中央に配置したいですか?
Murat Ozgul 2016

1
追加する絶対位置指定子と垂直方向にすべてのスペースを埋めるためtop:0bottom:0100%が」@Premasagarに取る: ``高さの代わりとして働いていた
ニック・ピネダ

1
ジュースは追加lefttoprightおよびbotton0へと完璧に動作します。
jose920405 2016

64

最初のステップは追加することです

position: 'absolute',

次に、要素を全幅にする場合は、

left: 0,
right: 0,

次に、要素を下部に配置する場合は、追加します

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

あなたが一番上に要素を配置したい場合は、交換するbottom: 0ことにより、top: 0


4

この解決策は私のために働いた:

tabBarOptions: {
      showIcon: true,
      showLabel: false,
      style: {
        backgroundColor: '#000',
        borderTopLeftRadius: 40,
        borderTopRightRadius: 40,
        position: 'relative',
        zIndex: 2,
        marginTop: -48
      }
  }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.