<View style={{height: '100%', width: '100%'}}> {OtherContent} <ScrollView> <View style={{flexDirection: 'row', flexWrap: 'wrap', padding: 20}}> {children} </View> <ScrollView> </View>
I want the View
inside ScrollView
to be in center of the screen without changing it's children position
Children:
<View style={Styles.docsContainer}> {arr.map((document, index) => { return ( <TouchableOpacity key={index} style={[Style.docStyle} onPress={null}> <Icon name='file-text-o'/> <Text>{document.name}</Text> </TouchableOpacity> ); })} </View> const Styles: { docsContainer: { flexDirection: 'row', flexWrap: 'wrap', padding: 20, }, docStyle: { alignItems: 'center', padding: 20, margin: 5, marginBottom: 10, borderRadius: 8, width: 170 }
}
3 Answers
Answers 1
Indeed, we don't need parent View, we just need scrollView as flewGrow 1 which makes scrollView have full height and width as per device.
My approach:
<ScrollView contentContainerStyle={{ flexGrow: 1, justifyContent: 'center', alignItems: 'center' }}> <View style={{ alignItems: 'center', justifyContent: 'center', flex: 1, }}> <Text>mahesh nandam</Text> </View> </ScrollView>
Try this.
Answers 2
The View
is your ScrollView
's immediate children. So you can style ScrollView
using contentContainerStyle
and align it in center like this.
<View style={{height: '100%', width: '100%'}}> <ScrollView contentContainerStyle={{ flexGrow: 1, justifyContent: 'center', alignItems: 'center', }} > <View style={{flexDirection: 'row', flexWrap: 'wrap', padding: 20}}> {children} </View> <ScrollView> </View>
I guess it's what you're loooking for.
Answers 3
Center Horizontally
If you only want to center the View
horizontally, you can set alignItems: 'center'
to ScrollView
's contentContainerStyle
.
<View style={{ height: '100%', width: '100%' }}> <Text>Other content</Text> <ScrollView contentContainerStyle={{ alignItems: 'center' }}> <View style={{ flexDirection: 'row', flexWrap: 'wrap', padding: 20, backgroundColor: 'red' }}> <Text>children</Text> </View> </ScrollView> </View>
The inner View
is highlighted in red.
Center Horizontally and Vertically
In this case, you can set { flex: 1, justifyContent: 'center', alignItems: 'center' }
for the same contentContainerStyle
.
<View style={{ height: '100%', width: '100%' }}> <Text>Other content</Text> <ScrollView contentContainerStyle={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <View style={{ flexDirection: 'row', flexWrap: 'wrap', padding: 20, backgroundColor: 'red' }}> <Text>children</Text> </View> </ScrollView> </View>
If what you expect is different layout than in either of the screenshots, please share a simple sketch of the layout.
0 comments:
Post a Comment