键盘遮挡了输入文本区域

5
我有一个表单,它显示在http://ionicframework.com/docs/api/service/$ionicPopup/中。问题是当光标放置在最后一个输入框(文本区域)中时,键盘会弹出,但输入框不会滚动到视图内,并被键盘遮挡。用户必须向下滚动。
我正在使用一个安卓设备。 文档说:
如果我用ion-content标签包装表单,输入框确实会滚回视图,但是使用ion-content会破坏我的布局,因此我正在寻找另一种解决方案。
更新: 清单的外观
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="myAwesomeApp" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="me.apla.cordova.AppPreferencesActivity" />
    <activity android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden" android:exported="false" android:name="com.google.zxing.client.android.CaptureActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden">
        <intent-filter>
            <action android:name="com.google.zxing.client.android.SCAN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.encode.EncodeActivity">
        <intent-filter>
            <action android:name="com.phonegap.plugins.barcodescanner.ENCODE" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.HelpActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="false" />

3个回答

0
如果您正在使用 Cordova Keyboard,当弹出窗口打开时,可以使用 cordova.plugins.Keyboard.disableScroll(false);,并在关闭时使用 cordova.plugins.Keyboard.disableScroll(true);。这样,布局就可以处理重叠的键盘,以防使用弹出窗口。

我没有使用 Cordova 键盘。 - user1275105

0

你需要在清单文件中将android:windowSoftInputMode="adjustResize"设置到Application或者Activity中。

同时检查一下你的Activity是否设置了getWindow().setSoftInputMode(...),如果设置了,请移除这些代码。


请看一下我提问中的清单。那个设置已经存在。 - user1275105
是的。我看了一下,它只设置在一个Activity中,而不是在Application中。我怎么知道那个Activity是键盘问题出现的地方呢? - Bob
那么我应该在每个Activity标签中添加该设置吗?这个文件是自动生成的,不是手动组合的。我认为cordova会为我们生成这个文件。在Ionic或Cordova中是否有某种钩子可以设置此设置? - user1275105

0
将以下内容添加到你的 AndroidMenifest 中的 Activity 中:
 android:configChanges="keyboardHidden|orientation|screenSize"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接