Вопрос по keyboard, android, cordova – PhoneGap: есть ли способ остановить изменение размера изображения на клавиатуре?

13

В настоящее время я использую PhoneGap для мобильного приложения, которое я разрабатываю. На моем экране входа в систему, когда я выбираю текстовое поле, представление сжимается горизонтально, когда клавиатура перемещается вверх. Это происходит только на Android, а не на iOS.

Это касается меня, потому что у меня есть нижняя панель инструментов, котораяposition:absolute; bottom:0; и эта панель инструментов отображается в Android, когда появляется клавиатура. В iOS клавиатура просто перекрывает ее.

Ваш Ответ

3   ответа
-1

    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />

к вашей метке

Вы добавили второй тег активности в AndroidManifest.xml? & lt; Activity android: name = & quot; org.apache.cordova.DroidGap & quot; Android: метка = & Quot; @ строка / имя_приложение & Quot; Android: configChanges = & Quot; ориентация | keyboardHidden & Quot; & GT; & Lt; Намерение фильтр & GT; & Lt; / Намерение фильтр & GT; & Lt; / активность & GT; Измените имя пакета на com.phonegap.DroidGap для Phonegap 1.4.x и более ранних
Это не работает. AlexCheuk
2

Eu Vid's answerХочу отметить, что 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">

Теперь добавьте следующий кодinside <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 будет сгенерирован с настройками выше.

Замечания:

The code above does not overwrite the <activity> block but merges with it; it will only replace the specified xml attributes. If you already called cordova platform add android beforehand, you can remove it by entering cordova platform rm android first before adding it again.
26

ВAndroidManifest.xml в вашей основной деятельности добавить следующее:

android:windowSoftInputMode="adjustPan"

а также

android:configChanges="orientation|keyboardHidden"

Вindex.html добавьте, на что указывают травмы:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />
идя по этому пути, было бы невозможно, чтобы клавиатура закрывала поле ввода. Оттуда пользователь не увидит, что он печатает.
@darewreck делает хорошую мысль, потому что у меня была именно эта проблема, и я реализовал это решение, и оно не сработает для меня именно по этой причине. Мне кажется, что мне нужно будет найти решение, в котором я могу выяснить, как определить, отображается ли клавиатура, назначить ли ей переменную и переключить видимость моей нижней панели, основываясь на этом, потому что поведение поля лучше с оригинальные настройки. Ответ правильный, хотя, но точка darewreck 'очень верна

Похожие вопросы