Cordova android - 键盘覆盖输入字段

Posted

技术标签:

【中文标题】Cordova android - 键盘覆盖输入字段【英文标题】:Cordova android - Keyboard covering input fields 【发布时间】:2018-12-14 23:44:12 【问题描述】:

我知道这个问题已经被问过很多次了,但没有一个回答能提供解决方案。

<preference name="fullscreen" value="false" /> 这并不是真正的解决方案,因为我希望应用全屏显示。

配置文件选项似乎没有做任何事情。我试过了:

android:windowSoftInputMode="adjustPan"
android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="adjustResize|stateHidden"

滚动偏移也不起作用,因为没有空间可以滚动。

$('.myinput').focus(function(e) 
    var container = $('.container'),
    scrollTo = $('.myinput');

    setTimeout((function() 
        container.animate(
            scrollTop: scrollTo.offset().top - container.offset().top + container.scrollTop()
        );
    ), 500);
);

【问题讨论】:

"没有空间可以滚动"?? 为什么不能向下滚动显示内容? 这显然是一个严重的 CSS 布局设计错误。首先修复它,然后您将看到 Android 如何自动滚动以显示您的输入字段。如果没有自动滚动,您可以动态向下滚动。 一点也不。无论页面高度如何,ios 和 Android 都会自动将输入滚动到视图中。 Android 多年来一直存在这个错误,但仍然没有修复。问题来自全屏模式。 【参考方案1】:

请安装:

cordova plugin add ionic-plugin-keyboard --save

然后让cordova准备在你的www文件夹中加载这个新插件。

document.addEventListener('deviceready', function(e)
    window.addEventListener('native.keyboardshow', function () 
            cordova.plugins.Keyboard.disableScroll(true);
        );
);

或者你可以试试这个javascript函数

<script>
      setInterval(function()
      if( document.body.className.match('keyboard-open') ) 
      document.getElementById("messagearea").style.marginBottom="100px";
      
                  else
                     document.getElementById("messagearea").style.marginBottom="0px";
                  

                  , 1000);

  </script>

【讨论】:

不幸的是,该插件的所有事件均未触发。

以上是关于Cordova android - 键盘覆盖输入字段的主要内容,如果未能解决你的问题,请参考以下文章

Android软键盘弹出,覆盖h5页面输入框问题

Android软键盘弹出,覆盖h5页面输入框问题

当虚拟键盘覆盖它时,如何让您的页面将输入元素滚动到视图中?

如何处理覆盖固定元素的Android键盘?

[Android UI界面] 软键盘覆盖edittext 使用ScrollView的详解、、高手快来吧

软键盘出现时如何保持Android webview中的固定页脚不覆盖输入字段?