android 网络浏览器和虚拟键盘

标签 android css html virtual-keyboard

我正在使用 PhoneGap 2.5.0 编写 HTML5 应用程序。

在应用的某些部分,如搜索页面,当虚拟键盘出现时,它会缩小整个页面,所以我仍然可以看到键盘正上方的页脚。

然而,在应用程序的其他部分(例如对话框)中,键盘会覆盖页面,因此可能会覆盖某些字段。

我不在应用程序中使用任何“固定”定位元素。所有需要留在同一个地方的元素都被设置为“绝对”。

键盘什么时候放在 View 上,什么时候缩小它?到目前为止我找不到答案。

相关的 HTML:

<body>
    <div role="dialog" id="details">
        <div class="popup-content">
            <header>
                <h1 role="heading">Details</h1>
            </header>
            <article>
                <div class="content">
                    <div class="label">Some Title</div>
                    <div id="dynamic_form">
                        <form><!-- dynamically filled form --></form>
                    </div>
                </div>
            </article>
            <footer>
                <ul class="footer-nav-buttons">
                    <li><a>Back</a></li>
                </ul>
            </footer>
        </div>
    </div>

    <page id="search">
        <header>
            <h1>Search</h1>
        </header>
        <article class="page-content">
            <div class="ui-header">
                <input name="searchterm" id="searchtermtextbox" value="" type="text">
            </div>
            <article>
                <div id="searchresultscontainer"></div>
            </article>
        </article>
    </page>

    <footer>
        <ul class="footer-nav-buttons main-navigation-bar">
            <li><a href="#menu" role="menuitem" class="button-menu"></a></li>
            <li><a href="#contacts" class="button-contacts"></a></li>
            <li><a href="#search" class="button-search"></a></li>
        </ul>
    </footer>
</body>

以及相关的CSS(还不完善,我会在后面尝试改进,但它包含了我正在使用的基本规则,不包括颜色、渐变、阴影等视觉样式):

body { margin: 0; position: absolute; height: 100%; width: 100%; }
page { position: absolute; top: 0; bottom: 0; left: 0; right: 0; display: none; }
page.selected { display: block; }
page>header { position: absolute; top: 0; left: 0; right: 0; height: 1cm; }
page article { position: absolute; top: 1cm; left: 0; bottom: 15mm; right: 0; }

div[role='dialog'] div.popup-content footer { position: relative; }
div[role='dialog'].visible { opacity: 1; z-index: 100; }
div[role='dialog'].active { display: -webkit-box; display: box; -webkit-box-align: center; }
div[role='dialog'] div.popup-content article { position: relative; }
div[role='dialog'] div.popup-content article div.content { position: relative; }

body>footer { position: absolute; bottom: 0; left: 0; right: 0; height: 15mm; }
ul.footer-nav-buttons { position: relative; display: -webkit-box; display: box; -webkit-box-align: center;
                        box-align: center; -webkit-box-pack: center; box-pack: center; list-style: none;
                        height: 100%; width: 100%; padding: 0; margin: 0;
                        -webkit-margin-before: 0;-webkit-margin-after: 0; -webkit-margin-start: 0;
                        -webkit-margin-end: 0; -webkit-padding-start: 0; }
ul.footer-nav-buttons li a { margin: 5px; }

最佳答案

解决这个 android 问题的最简单方法是使用输入焦点和模糊事件。

在 jQuery 中:

$("input").focus(function(){
    $('footer').hide();
});

$("input").blur(function(){
    $('footer').show();
});

关于android 网络浏览器和虚拟键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15568344/

相关文章:

java - list screenOrientation 属性与 setRequestedOrientation

css - CSS 网格中的 float 元素

javascript - 当我们从主页搜索任何内容时,如何让谷歌完成动画

php - 有没有一个程序可以查看 LESS 和 PHP/HTML 文件并删除未使用的 CSS

html - CSS 文本垂直对齐问题

android - 使用 AccessibilityService 中的 AccessibilityNodeInfo 执行滚动

Android gradle 签名配置错误

asp.net - 如何设置母版页中所有内容页的颜色

html - 任何设置标签云小部件样式的方法,具有许多不同的类名

android - 开发控制台与 fire base 崩溃报告有什么区别