大家好,
我不确定谁需要听到这个,但我当然希望我早点知道这一点。
长期以来,在使用 Ionic/Angular 构建应用程序时,我一直在努力让键盘在 Android 设备上表现得流畅且可预测。主要问题是键盘经常会突然调整布局大小并覆盖输入字段,总体上造成糟糕的用户体验。
我花了很多时间寻找解决方案,调整不同的配置,并试图找到一种方法来防止键盘引起这些问题。
我尝试在 Android 清单中使用
android:windowSoftInputMode="adjustPan"
,但这并没有解决问题。
我还尝试在电容器配置中使用不同的 keyboardResize
选项(Ionic
、Body
、Native
),但它们都没有给我带来我想要的流畅行为。
经过更多搜索后,我在 Github 上发现了一个关于 Ionic 官方文档中没有详细记录的利基的线程 - 至少我找不到。这个功能最终解决了我的问题。
我将在下面的回答中提供解决方案:)
我遇到了这个 GitHub 线程,其中他们提到了一个名为
InputShims
的配置设置,它有助于修复一些 Android 特定的行为 - 例如键盘如何与输入字段交互。
一位 Ionic 工程负责人指出,默认情况下,滚动辅助在 Android 上并未启用,仅在 iOS 上启用。因此,为了在 Android 上包含滚动辅助,您必须将
inputShims: true
添加到配置中,如下所示:
IonicModule.forRoot({ inputShims: true })
他们还提到,如果启用了 webview 调整大小,滚动辅助将不起作用,这应该稍后修复。但由于该线程已有 4-5 年历史,我还没有真正注意到将
resize
设置为 None
或 Ionic
之间的区别。
这就是说..这是最初的建议:
JSON 格式
{
"plugins": {
"Keyboard": {
"resize": "none"
}
}
}
或者如果打字稿:
plugins: {
Keyboard: {
resize: KeyboardResize.None,
},
},
再次,我不确定这是否会帮助其他人处理 Android 键盘,它肯定对我有帮助。也许我只是慢了或者也许我错过了一些东西..但现在它就在这里,也许它可以拯救其他人。
祝你有美好的一天:)