PhoneGap: есть ли способ, чтобы клавиатура не изменяла размер представления?
В настоящее время я использую phonegap для мобильного приложения im. На экране "Мой вход", когда я выбираю текстовое поле, изображение сжимается горизонтально, когда клавиатура сдвигается вверх. Это происходит только для Android, а не для iOS.
Это касается меня, потому что у меня есть нижняя панель инструментов position:absolute; bottom:0;
, и эта панель инструментов выдвигается в Android, когда появляется клавиатура. В iOS клавиатура просто накладывает его.
Ответы
Ответ 1
В AndroidManifest.xml
вашего основного действия добавьте следующее:
android:windowSoftInputMode="adjustPan"
и
android:configChanges="orientation|keyboardHidden"
В index.html
добавьте то, что указывали traumalles:
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />
Ответ 2
Добавить
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />
в свой заголовок
Ответ 3
Наверх Ответ Eu Vid, я хочу отметить, что Cordova 6.4.0 и выше поддерживает <edit-config />
, который мы можем использовать для изменения AndroidManifest.xml
.
Сначала вам нужно будет добавить атрибут пространства имен android. В config.xml
добавьте новый атрибут xmlns:android="http://schemas.android.com/apk/res/android"
в <widget />
. Ваш блок виджетов должен выглядеть примерно так:
<widget
id="com.my.app"
version="0.0.1"
xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
Теперь добавьте следующий код внутри <widget />
:
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity">
<activity android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="adjustPan" />
</edit-config>
Теперь, когда вы вызываете cordova platform add android
, AndroidManifest.xml
будет сгенерирован с настройками выше.
Примечание:
- Приведенный выше код не перезаписывает блок
<activity>
, но сливается с ним; он заменит только указанные атрибуты xml.
- Если вы уже вызвали
cordova platform add android
заранее, вы можете удалить его, введя cordova platform rm android
сначала, прежде чем добавлять его снова.