React Native에서 Android 키보드 이슈 해결

문제 상황

회원가입 폼을 구현하던 중 Android에서 키보드가 입력 필드를 가리는 문제가 발생했다. iOS는 정상 동작했지만 Android만 하단 입력 필드가 키보드에 완전히 가려졌다.

시도한 방법들

1. KeyboardAvoidingView 적용

import { KeyboardAvoidingView, Platform } from 'react-native';

<KeyboardAvoidingView
  behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
  style={{ flex: 1 }}
>
  <ScrollView>
    <TextInput placeholder="이메일" />
    <TextInput placeholder="비밀번호" />
  </ScrollView>
</KeyboardAvoidingView>

일부 개선되었지만 완벽하지 않았다.

2. AndroidManifest.xml 설정

<activity
  android:name=".MainActivity"
  android:windowSoftInputMode="adjustResize">
</activity>

adjustResize로 변경하니 레이아웃이 키보드에 맞춰 조정되었다. 기본값인 adjustPan은 화면을 밀어올리기만 해서 문제가 있었다.

3. react-native-keyboard-aware-scroll-view

더 복잡한 폼에서는 서드파티 라이브러리를 사용했다.

npm install react-native-keyboard-aware-scroll-view
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';

<KeyboardAwareScrollView
  enableOnAndroid={true}
  extraScrollHeight={20}
>
  {/* 폼 컴포넌트들 */}
</KeyboardAwareScrollView>

결론

단순한 폼은 adjustResize 설정으로 충분했다. 복잡한 레이아웃에서는 KeyboardAwareScrollView가 효과적이었다. Android와 iOS의 키보드 동작 차이를 항상 염두에 두고 테스트해야 한다.