android - Android 上的 Phonegap : Layout scrollable when using keyboard

标签 android cordova android-softkeyboard

我刚刚开始使用 Maqetta 在 Android 和 WindowsPhone 上为phonegap 创建移动应用程序。该应用程序包括一些带有文本输入的网页,因此我需要软键盘才能工作。

我的问题是键盘在两个操作系统上的 react 完全不同。在 Windows Phone 上,当我单击文本框时,键盘会显示并覆盖其下方的所有内容。要到达其他文本框,我仍然可以在显示我的网站的字段中滚动并选择它。另外,对我来说非常重要的是,该网站没有压缩。这正是我想要的。

在 Android 上,事情有点复杂。经过大量研究后,我偶然发现了这些人:

android:windowSoftInputMode="adjustResize"和 android:windowSoftInputMode="adjustPan"

我都尝试过,但都不符合我的需要。 adjustmentRezise 压缩我的网站(因为网站高度:100%),并且 adjustmentPan 覆盖其下方的所有内容,而无法访问它(除了关闭键盘并为每个文本框重新打开它//并且必须在看不到您键入的内容的情况下键入) .

我也听说过 ScrollViews 和类似的东西,但由于我是这个主题的新手,我不知道这到底是什么以及如何使用它,因为我专注于应用程序的 html 和 css 部分,所以如果您有任何提示,请记住,我可能需要一些信息才能理解。 ;)

如果你们中有人能帮助我解决这个问题,我将非常高兴。希望有解决办法。

最佳答案

设置高度:150% 对我来说不起作用。即使没有足够的内容可以滚动,它也可以使页面滚动。以下解决方案(CSS 和 Javascript 的混合)适用于:

  1. 在 CSS 中:我保留了 app/HTML 的高度:100%;和溢出-y:自动;

    #container {
       height: 100%;
       overflow-y: auto;
    }
    
  2. 检测聚焦的文本区域或输入,然后等待一段时间,直到显示键盘,最后滚动页面以到达聚焦的输入。

    $("#textarea").focus(function(e) {
        var container = $('#container'),
        scrollTo = $('#textarea');
    
        setTimeout((function() {
           container.animate({
           scrollTop: scrollTo.offset().top - container.offset().top + container.scrollTop()
           });
        }), 500);
    
    });
    

    当键盘隐藏时,文本区域保持焦点,因此如果再次单击键盘将显示,并且容器需要再次滚动以显示输入

    $("#textarea").click(function(e) {
        e.stopPropagation();
        var container = $('#container'), //container element to be scrolled, contains input
        scrollTo = $('#textarea');
    
        setTimeout((function() {
            container.animate({
            scrollTop: scrollTo.offset().top - container.offset().top + container.scrollTop()
          });
        }), 500);
    });
    

关于android - Android 上的 Phonegap : Layout scrollable when using keyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17809804/

相关文章:

html - ionic 导航按钮未显示在右侧

android - LibGDX 多循环音效在桌面上工作,但在 Android 上不工作

android - 如何将应用程序置于后台?

cordova - 在PouchDB中存储视频/音频

android - 键盘隐藏事件

android - 播放媒体播放器时显示软键盘时 UI 卡住了?

android - 键盘出现后 View 未调整大小

android - Android中的MD5哈希

android - 为 progressDialog 设置一个通用主题?

android - 设置 InAppBrowser 或 Themeable Browser 高度以显示应用程序的底部选项卡