我如何同时使用' adjustPan'和' adjustResize'在AndroidManifest.xml中反应本机应用程序。
我的导航是在ReactNavigation上使用StackNavigator和TabNavigator完成的。我有一个文本框,用户可以在其中键入任何数据。执行此操作时,标签栏显示在键盘顶部。为了阻止这个,我使用了' adjustPan'它运作良好。
在另一个屏幕上,我注册了多个文本框。在这里,我无法滚动整个屏幕,除非点击'勾选'在键盘上或手动单击系统后退按钮。为了解决这个问题,我找到了&键盘自动查看'这工作正常。但要激活这个需要改变windowSoftInputMode'到' adjustResize'。
在文档中,发现这两者具有完全不同的属性,我无法将它们放在一起。有人可以帮我吗?
答案 0 :(得分:3)
使用'react-native-android-keyboard-adjust'进行检查,这将帮助您在注册屏幕上使用调整调整大小 https://www.npmjs.com/package/react-native-android-keyboard-adjust
npm install --save react-native-android-keyboard-adjust
将编译项目(“:react-native-android-keyboard-adjust”)添加到依赖项:
dependencies {
...
compile project(":react-native-android-keyboard-adjust")
...
}
...
include ':react-native-android-keyboard-adjust'
project(':react-native-android-keyboard-adjust').projectDir = new File(settingsDir, '../node_modules/react-native-android-keyboard-adjust/android')
...
导入包
导入 net.zubricky.AndroidKeyboardAdjust.AndroidKeyboardAdjustPackage; 将包添加到getPackages方法
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
...
new AndroidKeyboardAdjustPackage()
);
}
从导入AndroidKeyboardAdjust 'react-native-android-keyboard-adjust';
AndroidKeyboardAdjust.setAdjustNothing();
答案 1 :(得分:2)
我找到了一个名为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
。
例如,假设您的默认windowSoftInputMode
为adjustResize
,并且您想在ScreenA中使用adjustPan
,则在挂载ScreenA时可以调用AndroidKeyboardAdjust.setAdjustPan()
,然后重置通过调用windowSoftInputMode
adjustResize
到AndroidKeyboardAdjust.setAdjustResize()
卸载