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 сначала, прежде чем добавлять его снова.