2016-01-09 13 views
9

Mam listę ikon wewnątrz mojego stylizowanego kontenera, które są wyświetlane w flexDirection:'row', ale gdy jest więcej ikon niż szerokość widoku, nie przerywaj do następnej linii, ale kontynuuj po prawej stronie z widoku. Jak mogę przekonwertować zawartość na następny wiersz, jeśli osiągnie maksymalną szerokość?Natywny reaktywny język Flex - sposób podziału treści na kolejną linię z flexem, gdy zawartość osiąga krawędź

Stylizacja:

var styles = StyleSheet.create({ 
    container: { 
    width: SCREEN_WIDTH, //width of screen 
    flexDirection:'row', 
    backgroundColor: 'transparent', 
    marginTop:40, 
    paddingLeft:10, 
    paddingRight:10, 
    flex: 1, 
    }, 
    iconText:{ 
    paddingLeft:10, 
    paddingRight:10, 
    paddingTop:10, 
    paddingBottom:10 
    }, 
}); 

Render:

<View style={styles.container}> 

     <TouchableHighlight 
     onPress={() => this.changeIcon(indexToChange, icons[0])} 
     underlayColor='#F7F7F7'> 
      <Text style={styles.iconText}><IonIcons name={icons[0]} size={30} color="#555" /></Text> 
     </TouchableHighlight> 

     <TouchableHighlight 
     onPress={() => this.changeIcon(indexToChange, icons[1])} 
     underlayColor='#F7F7F7'> 
      <Text style={styles.iconText}><IonIcons name={icons[1]} size={30} color="#555" /></Text> 
     </TouchableHighlight> 

     <TouchableHighlight 
     onPress={() => this.changeIcon(indexToChange, icons[2])} 
     underlayColor='#F7F7F7'> 
      <Text style={styles.iconText}><IonIcons name={icons[2]} size={30} color="#555" /></Text> 
     </TouchableHighlight> 

     ...//more continued on 

</View> 

Kiedy ikony osiągnąć szerokość w prawo dont przełamać do dołu. czy to możliwe?

Odpowiedz

22

Możesz dodać flexWrap: 'wrap' i alignItems: flex-start (lub coś innego niż stretch do stylu kontenera.

Jeśli nie określisz align-items lub jeśli ustawisz align-items: stretch każda kolumna w pierwszym rzędzie zajmie tyle wysokość jak możliwe, przesuwając drugi wiersz poniżej trochę jak na poniższym zrzucie ekranu:

With no alignItems specified

+0

treści na prawo teraz jest ukryta nie owijając w dół chociaż Czy potrzebuję nowego elastycznego pojemnika dla każdego wiersza..? – Chipe

+0

@Chipe możesz po prostu dodać 'align-items: flex-start' na przykład i powinno działać tak, jak chcesz. Edytowałem swoją odpowiedź. – Almouro

+0

Wielkie dzięki, to wystarczy! Czy są jakieś odniesienia do tutoriali, które polecasz do nauki flex? – Chipe

Powiązane problemy