2015-12-07 38 views
2

我正在試圖在right容器的底部將<View>稱爲footer粘貼。React Native - 容器底部的粘性頁腳

這是一個活生生的例子:
https://rnplay.org/apps/G3rHqQ

如果我做比對一個更高的左側容器,那麼它不會工作。如果有合適的容器比左側一個高於工程....

enter image description here

紅色和橙色的元素是動態的,不同的高度取決於它們的內容。相反,藍色的應該始終堅持正確的容器底部。

我也嘗試過position: 'absolute'; bottom:0; left: 0; right: 0;它確實堅持到底部,但只有如果正確的容器比左側高。

+0

你可以發佈你想要實現的圖片嗎? – eyal83

+0

謝謝,我在描述中添加了一張圖片。 – braccato84

回答

0

看起來你需要在最外面的容器上設置一個flex:1來獲得你想要的flex特性。我已經建立了一個工作項目here並粘貼了下面的代碼。

https://rnplay.org/apps/WoceXg

'use strict'; 

import React, { AppRegistry, StyleSheet, View, Text } from 'react-native'; 

const SampleApp = React.createClass({ 
    render: function() { 
    return (
     <View style={{ flex:1 }}> 
     <View style={styles.wrapper}> 
      <View style={styles.left}> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      <Text>Left</Text> 
      </View> 
      <View style={styles.right}> 
      <View style={styles.rightInner}> 
       <View style={styles.content}> 
       <Text>content</Text> 
       <Text>content</Text> 
       </View> 
       <View style={styles.footer}> 
       <Text>Sticky</Text> 
       </View> 
      </View> 
      </View> 
     </View> 
     <View style={{ flex:1 }}></View> 
     </View> 
    ); 
    }, 
}); 

const styles = StyleSheet.create({ 
    wrapper: { 
    flexDirection: 'row', 
    paddingTop: 50, 
    flex:1 
    }, 
    left: { 
    backgroundColor: 'lightblue', 
    flex: 1, 
    }, 
    right: { 
    backgroundColor: 'lightgreen', 
    flex: 4, 
    }, 
    rightInner: { 
    flex: 1, 
    backgroundColor: 'orange', 
    }, 
    content: { 
    flex: 1, 
    }, 
    footer: { 
    backgroundColor: 'green', 
    } 
}); 

AppRegistry.registerComponent('SampleApp',() => SampleApp); 
+0

你正在用''做什麼,就是佔用頁面上一半的空間,並使包裝一拉伸。通過拉伸容器變得比左邊的高,導致「footer」在底部。嘗試向該「視圖」添加背景,您將看到它佔據了底部空間。 – braccato84

-1

我試圖做同樣的事情。我需要一個視圖來堅持底部。我使用poistion: 'absolute', bottom:0,它確實堅持到底部,但視圖的寬度不再伸展。

+0

我使用了相同的技巧,'position:'absolute';底部:0;左:0;正確:0;'。如果正確的容器比左邊的容器高,它工作正常。如果它更短,那麼定位的絕對元素將不會考慮「bottom:0;」。它可能是Flexbox中的一個錯誤嗎? – braccato84

+0

不確定。我最終不得不把ListView放在視圖上方,我需要堅持到底部,並且ListView展開以填充該區域,所以我的問題消失了。仍然希望看到這個答案。 –

+0

這是一個答案或評論,請閱讀StackOverflow指南,將您的貢獻以答案或評論的形式 – Zafta