软键盘遮挡输入框

Android 软键盘遮挡输入框

Android 软键盘弹出时根据配置会有不同的行为,比如:

  • adjustResize:会调整布局,但是会导致页面整体上移
  • adjustPan:不会调整布局,而是把输入框顶上去,但是会遮挡输入框
  • adjustNothing:不会调整布局,也不会遮挡输入框,但是会导致页面整体上移

建议使用 adjustPanadjustResize 通常会破坏绝对定位。

/android/app/src/main/AndroidManifest.xml 中配置如下:

1<activity
2  android:name=".MainActivity"
3  android:windowSoftInputMode="adjustPan">

iOS 软键盘遮挡输入框

使用 KeyboardAvoidingView 组件,调整布局。

1import { KeyboardAvoidingView } from 'react-native'
2
3function Screen() {
4  return (
5    <KeyboardAvoidingView
6      behavior={Platform.OS === 'ios' ? 'padding' : undefined}
7      keyboardVerticalOffset={120}
8    >
9      <TextInput />
10    </KeyboardAvoidingView>
11  )
12}