【问题标题】:Android keyboard disappears on resizeAndroid键盘在调整大小时消失
【发布时间】:2021-11-29 13:59:01
【问题描述】:

我是 Android 新手,因为我目前正在使用跨平台运行时 (Capacitor),因此我们实际上有一个适用于三个平台(iOS、Web 和 Android)的代码库。

我遇到了一些问题,如果 manifest.xml 中的键盘输入样式设置为“adjustResize”而不是“adjustPan”,键盘会出现片刻,然后在我的 Webview 应用程序上消失,我已经做了一些测试,它似乎也导致了 webview 的完全刷新以调整大小以适应键盘,但这很快也迫使键盘关闭,有什么办法可以解决这个瓶颈?

我不能使用adjustpan,因为我有一些直接位于屏幕底部的组件,键盘会完全飞过我希望用户看到的重要内容,非常感谢任何帮助:)

【问题讨论】:

    标签: android reactjs react-redux capacitor


    【解决方案1】:

    除了 iOS,当软键盘出现时,android 会发送 resize 事件。 因此,只要您的 PWA(跨平台)具有基于 resize 事件的移动响应能力,它就会在出现 android 键盘时重新渲染。

    让我在这里分享我解决此问题的方法。

    1. 在 AndroidManifest.xml 中,在activity 中添加adjustpan

      android:windowSoftInputMode="adjustPan"

    然后,Android 键盘将始终出现,但会覆盖网页内容。 现在,我们必须通过向上移动键盘高度来调整网页内容

    1. 在你的 PWA 中安装电容键盘包

      npm install @capacitor/keyboard"

    2. 检测keyboardDidShow 事件并将内容向上移动为键盘高度。 并且当键盘消失时,通过keyboardDidHide重置内容位置

      import { Keyboard } from "@capacitor/keyboard";
      const [keyboardHeight, setKeyboardHeight] = useState(0);
      
      useEffect(() => {
        const getDeviceInfo = async () => {
          const info = await Device.getInfo();
          setDeviceInfo(info.platform);
        };
        getDeviceInfo();
      
        Keyboard.addListener("keyboardDidShow", info => {
          setTimeout(() => {
            setKeyboardHeight(info.keyboardHeight);
          }, 300);
        });
      
        Keyboard.addListener("keyboardDidHide", info => {
          setKeyboardHeight(0);
        });
      
      
    3. 并根据keyboardHeight调整网页内容位置

    【讨论】:

    • 谢谢@Sandokan
    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 2011-10-09
    • 1970-01-01
    • 2017-07-25
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多