環境
- react-native : 0.57.8
Android で React Native の KeyboardAvoidingView の behavior を指定すると、逆に Input がキーボードに隠れてしまった話
React Native に KeyboardAvoidingView というコンポーネントがある
- キーボードを出した際に、入力フィールドなどがキーボードに隠れないようにしてくれる
Android で React Native の
KeyboardAvoidingView
のbehavior
にpadding
を指定すると、逆に Input がキーボードに隠れてしまったなので、
behavior={Platform.OS === 'ios' ? 'padding' : null}
のようにして Android ではbehavior
を指定しないようにした公式ドキュメントにもこう書かれている (最初からちゃんと読もう)
Android and iOS both interact with this prop differently. Android may behave better when given no behavior prop at all, whereas iOS is the opposite.
<KeyboardAvoidingView style={{flex: 1}} behavior={Platform.OS === 'ios' ? 'padding' : null} // Android で padding を使用すると、KeyboardAvoidingView を使用しているにも関わらず、Input がキーボードに隠れてしまう > <View style={{ backgroundColor: 'gray', height: 100, }} > </View> <View style={{ flex: 1, //キーボードを出した際、KeyboardAvoidingView の behavior='padding' によりキーボードで狭くなった領域を 100% として調整される backgroundColor: 'pink', }}> <Text> Android で padding を使用すると、KeyboardAvoidingView を使用しているにも関わらず、Input がキーボードに隠れてしまう </Text> </View> <Input style={{ backgroundColor: 'white', height: 50, }} placeholder={'なにか入力してください'} /> </KeyboardAvoidingView>