KeyboardAvoidingView #

It is a component to solve the common problem of views that need to move out of the way of the virtual keyboard. It can automatically adjust either its position or bottom padding based on the position of the keyboard.

Props #

behavior enum('height', 'position', 'padding') #

contentContainerStyle View#style #

The style of the content container(View) when behavior is 'position'.

keyboardVerticalOffset number #

This is the distance between the top of the user screen and the react native view, may be non-zero in some use cases.

Methods #

relativeKeyboardHeight(keyboardFrame): #

onKeyboardChange(event) #

onLayout(event) #

You can edit the content above on GitHub and send us a pull request!

Examples #

Edit on GitHub
'use strict'; const React = require('React'); const ReactNative = require('react-native'); const { KeyboardAvoidingView, Modal, SegmentedControlIOS, StyleSheet, Text, TextInput, TouchableHighlight, View, } = ReactNative; const UIExplorerBlock = require('./UIExplorerBlock'); const UIExplorerPage = require('./UIExplorerPage'); class KeyboardAvoidingViewExample extends React.Component { static title = '<KeyboardAvoidingView>'; static description = 'Base component for views that automatically adjust their height or position to move out of the way of the keyboard.'; state = { behavior: 'padding', modalOpen: false, }; onSegmentChange = (segment: String) => { this.setState({behavior: segment.toLowerCase()}); }; renderExample = () => { return ( <View style={styles.outerContainer}> <Modal animationType="fade" visible={this.state.modalOpen}> <KeyboardAvoidingView behavior={this.state.behavior} style={styles.container}> <SegmentedControlIOS onValueChange={this.onSegmentChange} selectedIndex={this.state.behavior === 'padding' ? 0 : 1} style={styles.segment} values={['Padding', 'Position']} /> <TextInput placeholder="<TextInput />" style={styles.textInput} /> </KeyboardAvoidingView> <TouchableHighlight onPress={() => this.setState({modalOpen: false})} style={styles.closeButton}> <Text>Close</Text> </TouchableHighlight> </Modal> <TouchableHighlight onPress={() => this.setState({modalOpen: true})}> <Text>Open Example</Text> </TouchableHighlight> </View> ); }; render() { return ( <UIExplorerPage title="Keyboard Avoiding View"> <UIExplorerBlock title="Keyboard-avoiding views move out of the way of the keyboard."> {this.renderExample()} </UIExplorerBlock> </UIExplorerPage> ); } } const styles = StyleSheet.create({ outerContainer: { flex: 1, }, container: { flex: 1, justifyContent: 'center', paddingHorizontal: 20, paddingTop: 20, }, textInput: { borderRadius: 5, borderWidth: 1, height: 44, paddingHorizontal: 10, }, segment: { marginBottom: 10, }, closeButton: { position: 'absolute', top: 30, left: 10, } }); module.exports = KeyboardAvoidingViewExample;