Best order for KeyboardAvoidingView, SafeAreaView and ScrollView
Here is a re-usable component example without library and includes KeyboardAvoidingView, SafeAreaView and ScrollView. It also makes scrollview expand to full height.
import { KeyboardAvoidingView, SafeAreaView, ScrollView } from 'react-native';
import React from 'react';
const ScreenContainer = props => {
const { children } = props;
return (
<SafeAreaView style={ { flex: 1 } }>
<KeyboardAvoidingView
behavior={ Platform.OS === 'ios' ? 'padding' : 'height' }
style={ { flex: 1 } }
>
<ScrollView
contentInsetAdjustmentBehavior="automatic"
keyboardShouldPersistTaps="handled"
>
{ children }
</ScrollView>
</KeyboardAvoidingView>
</SafeAreaView>
);
};
export default ScreenContainer;
SafeAreaView
only works with iOS
. Therefore, it is assumed that you use the iOS
. If your project is iOS
, you can use KeyboardAwareScrollView
.
SafeAreaView
should be at the top because it covers the area of the screen.
KeyboardAwareScrollView Example
Usage
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'
...
<SafeAreaView>
<KeyboardAwareScrollView>
<View>
<TextInput />
</View>
</KeyboardAwareScrollView>
</SafeAreaView>