android - 当软键盘出现在 phonegap 中时隐藏输入字段

标签 android html css cordova iscroll

使用适用于 Android 和 iOS 的 Phonegap 3.6.3 创建移动应用程序。问题仅适用于 Android,因为 iOS 的行为符合我的意愿。

当我单击输入文本字段或文本区域时,会出现一个软键盘。它有时涵盖这些元素。

页面位于底部的 iScroll 和另一个绝对放置的 div 中,因此一旦屏幕弹出,我就无法滚动到其中任何一个。我怀疑当键盘出现时我必须将 webview 更改为更小。然而,在尝试了很多事情之后,它并没有奏效。

config.xml

    <preference name="permissions" value="none" />
    <preference name="phonegap-version" value="3.5.0" />
    <preference name="orientation" value="default" />
    <preference name="target-device" value="universal" />
    <preference name="fullscreen" value="false" />
    <preference name="webviewbounce" value="true" />
    <preference name="prerendered-icon" value="false" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="false" />
    <preference name="auto-hide-splash-screen" value="false" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="13" />
    <preference name="android-windowSoftInputMode" value="adjustResize|stateHidden" />
    <preference name="android-installLocation" value="auto" />
    <preference name="SplashScreen" value="splash" />

(已经为 android-windowSoftInputMode 尝试了许多不同的值,如下例所示)

    <preference name="android-windowSoftInputMode" value="stateVisible|adjustResize|adjustPan" />

网页头部

    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />

(是的,我也尝试过很多其他的东西)

您可能认为相关的任何其他内容,请告诉我。不幸的是,我不能随意分享太多的代码,但据我所知,这就是我们需要担心的。

谢谢,

最佳答案

我也有同样的问题——潜在的问题似乎是你不能用 cordova Build 编辑 androidManifest 文件。您所能做的就是编辑 config.xml 文件,该文件实际上只允许您更改有限的设置子集。我想要的是能够更改 windowSoftInputMode

我确实找到了解决问题的方法。这是键盘出现在屏幕底部的字段上,我认为这与您遇到的问题相同。我用过cordova 2.9.0和cordova 3.6.0

解决方案 1: 我找到的解决方案是在 config.xml

中更改此设置
<preference name="fullscreen" value="false" />

这会将该设置设置为“false”而不是“true”- 页面现在向上滚动以在键盘打开时显示您正在编辑的字段。 (更准确地说,我相信 viewport 会改变而不是向上滚动。希望你在视口(viewport)部分是正确的)

解决方案 2:尝试从 config.xml 中删除或替换此行

<preference name="android-windowSoftInputMode" value="adjustResize|stateHidden" />

作为

<preference name="android-windowSoftInputMode" value="stateVisible|adjustResize"/>

相反。这现在对我有用。

解决方案 3:尝试将此样式添加到您的页面

<style> <item name="android:windowTranslucentStatus">true</item></style>

编辑:

如果您正在使用 jQuery,您可以尝试一下。

$('input, textarea, button, a, select').off('touchstart mousedown').on('touchstart mousedown', function(e) {
    e.stopPropagation();
});

关于android - 当软键盘出现在 phonegap 中时隐藏输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575999/

相关文章:

java - 如何从特定 Activity 返回到抽屉导航 Activity

javascript - 如何设置PrimeUI Datatable的列宽

html for 循环添加另一个条件

android - BroadcastReceiver 需要 android.permission.RECEIVE_BOOT_COMPLETED

android - 是否有使用字幕的 ExoPlayer + Leanback 库示例?

html - 创建响应行

html - 垂直对齐 block <a> 标签中的一些文本

php - 如何使用 PHP 或 HTML 在浏览器中查看/打开 word 文档

html - 如何使我的左侧选项卡向左浮动,但将空白区域填充到向右浮动的其他选项卡?

android - 在具有 MenuItem.SHOW_AS_ACTION_ALWAYS 的 ActionBarSherlock 中将 TextWatcher 添加到 EditText