Reputation: 1261
Why is flexDirection not working when view is placed in a ScrollView for react native?
When my view is not placed in a scrollview, the parameter flexDirection: 'row' works fine.
export default class ProfileScreen extends Component {
render() {
return (
<View style={{flex: 0.1, flexDirection: 'row', justifyContent: 'flex-start', height:70}}>
<View style={{flex:0.2, backgroundColor: 'red'}} />
<View style={{flex:0.8, backgroundColor: 'skyblue'}} />
<View style={{flex:0.2, backgroundColor: 'steelblue'}} />
</View>
);
}
When it's placed in a scroll view, the parameter flexDirection no longer works.
export default class ProfileScreen extends Component {
render() {
return (
<ScrollView stickyHeaderIndices={[0]} >
<View style={{flex: 0.1, flexDirection: 'row', justifyContent: 'flex-start', height:70}}>
<View style={{flex:0.2, backgroundColor: 'red'}} />
<View style={{flex:0.8, backgroundColor: 'skyblue'}} />
<View style={{flex:0.2, backgroundColor: 'steelblue'}} />
</View>
<View style={{flex: 1, flexDirection: 'row', height: 10}} />
<View style={{flex: 1, flexDirection: 'row', height: 200, backgroundColor: 'skyblue'}} />
<View style={{flex: 1, flexDirection: 'row', height: 10}} />
</ScrollView>
);
}
}
Upvotes: 7
Views: 9234
Reputation: 411
Put flexDirection in contentContainerStyle, Try this way:
<ScrollView style={{Your Style}} contentContainerStyle={{flexDirection:'row'}}>
<View>
</View>
<View>
</View>
</ScrollView>
Upvotes: 9
Reputation: 171
I came across this issue.
Think what happens is, the stickyHeaderIndices
overwrites some of the styles in the affected View.
Simply wrapping the View you want to stick with another will solve the problem i.e
...
<ScrollView stickyHeaderIndices={[0]} >
<View>
<View style={{flex: 0.1, flexDirection: 'row', ... }}>
<View style={{flex:0.2, backgroundColor: 'red'}} />
<View style={{flex:0.8, backgroundColor: 'skyblue'}} />
<View style={{flex:0.2, backgroundColor: 'steelblue'}} />
</View>
</View>
...
</ScrollView>
Upvotes: 17
Reputation: 1261
This code works:
export default class ProfileScreen extends Component {
render() {
return (
<ScrollView stickyHeaderIndices={[0]} style={{flex:1}}>
<View style={{flex: 0.1, flexDirection: 'row', justifyContent: 'flex-start', height:70}}>
<View style={{flex: 1, flexDirection: 'row', justifyContent: 'flex-start', height:70}}>
<View style={{flex:0.2, backgroundColor: 'red'}} />
<View style={{flex:0.8, backgroundColor: 'skyblue'}} />
<View style={{flex:0.2, backgroundColor: 'steelblue'}} />
</View>
</View>
<View style={{flex: 1, flexDirection: 'row', height: 10}} />
<View style={{flex: 1, flexDirection: 'row', height: 200, backgroundColor: 'skyblue'}} />
<View style={{flex: 1, flexDirection: 'row', height: 10}} />
</ScrollView>
);
}
}
Upvotes: 2