2016-01-19 3 views
9

Quindi ho una scrollview orizzontale nella parte superiore della vista. ScrollView contiene nodi che hanno una larghezza specificata. Ho quindi un bordo nella parte inferiore della ScrollView, come puoi vedere in questa schermata: http://i.imgur.com/pOV1JFP.pngReact nativo, i bambini di ScrollView non riempiono l'intera altezza

Come puoi vedere i nodi figli di ScrollView in alto non raggiungono il confine. Tuttavia, se cambio ScrollView in una vista con flexDirection: 'row', i nodi figlio riempiono l'altezza. Ho provato a cambiare alcune proprietà sul ScrollView, come ad esempio:

  • Impostazione padding:0 su contentContainerStyle
  • automaticallyAdjustContentInsets={false}
  • La modifica dei valori di contentInsets direttamente

Nessuno di coloro che sembrano risolvere il problema.

Lo ScrollView codice & stile:

var styles = StyleSheet.create({ 
    nav: { 
    padding: 0, 
    marginTop: 30, 
    flex: 1, 
    borderBottomWidth: 1, 
    borderColor: '#000000' 
    } 
}); 

<ScrollView 
    style={[{width: screen.width}, styles.nav]} 
    horizontal={true} 
    showsHorizontalScrollIndicator={true} 
    automaticallyAdjustContentInsets={false}> 
    {dayNavItems} 
</ScrollView> 

I componenti figlio (compensa dayNavItems)

const styles = StyleSheet.create({ 
    container: { 
    paddingLeft: 15, 
    paddingRight: 15, 
    width: 50, 
    justifyContent: 'center' 
    }, 
    odd: { 
    backgroundColor: '#ccc' 
    }, 
    selected: { 
    backgroundColor: '#39b54a' 
    }, 
    text: { 
    fontFamily: 'Optima' 
    } 
}); 

class DayNavItem extends React.Component { 
    static propTypes = { 
    day: React.PropTypes.object.isRequired, 
    odd: React.PropTypes.bool, 
    selectDay: React.PropTypes.func.isRequired, 
    selected: React.PropTypes.bool 
    }; 

    render() { 
    const d = new Date(this.props.day.created_at); 
    const viewStyles = [styles.container]; 
    if (this.props.selected) { 
     viewStyles.push(styles.selected); 
    } else if (this.props.odd) { 
     viewStyles.push(styles.odd); 
    } 
    return (
     <TouchableOpacity style={viewStyles} onPress={() => this.props.selectDay(this.props.day.uuid)}> 
     <View> 
      <Text style={styles.text}>{getMonth(d)}</Text> 
      <Text style={styles.text}>{d.getDate()}</Text> 
     </View> 
     </TouchableOpacity> 
    ); 
    } 
} 
+0

In qualsiasi modo è possibile mostrare il codice e lo stile per ScrollView e il genitore? –

+0

Grazie per il codice, verificarlo ora .. –

+0

Hai provato a impostare un'altezza per i componenti del contenitore? Ho ottenuto qualcosa di simile a quello su cui stai lavorando, ma ho dovuto dare ai componenti una proprietà height: https://rnplay.org/apps/QP4sBw –

risposta

0

C'è una proprietà chiamata contentContainerStyle per ScrollView. Ho appena risolto un problema simile in cui ho impostato flex: 1 per: scorrere gli stiliViewView, scrollView ContentContainerStyle e il componente Visualizzazione figlio.