環境
- 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>


