【问题标题】:How To Use both 'adjustPan' and 'adjustResize' for 'windowSoftInputMode' in React Native Android app如何在 React Native Android 应用程序中为“windowSoftInputMode”使用“adjustPan”和“adjustResize”
【发布时间】:2018-04-12 17:14:06
【问题描述】:

如何在 AndroidManifest.xml 中同时使用“adjustPan”和“adjustResize”来响应本机应用程序。

用例

我的导航是在 ReactNavigation 上使用 StackNavigator 和 TabNavigator 进行的。我有一个文本框,用户可以在其中输入任何数据。执行此操作时,标签栏显示在键盘的顶部。为了阻止这一点,我使用了“adjustPan”并且效果很好。

在另一个屏幕上,我注册了多个文本框。在这里,我无法滚动整个屏幕,除非单击键盘上的“勾号”或手动单击系统后退按钮。为了解决这个问题,我发现'KeyboardAvoidingView' 工作正常。但要激活此功能,需要将“windowSoftInputMode”更改为“adjustResize”。

在文档中,发现这两者具有完全不同的属性,我不能同时使用。有人可以帮我吗?

参考资料:https://medium.freecodecamp.org/how-to-make-your-react-native-app-respond-gracefully-when-the-keyboard-pops-up-7442c1535580

【问题讨论】:

  • 您找到解决方案了吗?我有类似的要求,但适用于 Android。

标签: react-native-android react-navigation


【解决方案1】:

我找到了一个名为react-native-android-keyboard-adjust的npm包,它允许我们按需切换windowSoftInputMode,这应该可以满足您的用例。但是,该库似乎没有得到积极维护,安装文档也有点过时,但在大多数情况下,您可以按照README.md 给出的说明进行操作。

对于Update MainActivity.java in your project部分,最近版本的React Native应该可以自动链接依赖,不需要手动修改。

完成上述步骤后,您可以尝试启动您的应用。如果您遇到与 The number of method references in a .dex file cannot exceed 64k 等相关的错误,您可以将以下内容添加到您的 android/app/build.gradle 文件中

android {
    ...

    defaultConfig {
        ...
        multiDexEnabled true
    }

    ...
}

安装包后,可以调用库提供的方法,根据需要更改windowSoftInputMode

例如,假设你有一个默认的windowSoftInputModeadjustResize,并且你想在ScreenA中使用adjustPan,你可以在ScreenA挂载时调用AndroidKeyboardAdjust.setAdjustPan(),并将windowSoftInputMode重置为adjustResize在卸载时调用AndroidKeyboardAdjust.setAdjustResize()

【讨论】:

    猜你喜欢
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多