2012-04-09 26 views
11

Actualmente estoy usando phonegap para una aplicación móvil en desarrollo. En mi pantalla de inicio de sesión, cuando selecciono un campo de texto, la vista se contrae horizontalmente cuando el teclado se desliza hacia arriba. Esto solo ocurre para Android y no para iOS.PhoneGap: ¿Hay alguna manera de evitar que el teclado cambie el tamaño de la vista?

Esto me preocupa porque tengo una barra de herramientas inferior que es position:absolute; bottom:0; y esta barra de herramientas se desplaza hacia arriba en Android cuando aparece el teclado. En iOS, el teclado simplemente se superpone.

Respuesta

26

En AndroidManifest.xml en su actividad principal añaden los siguientes:

android:windowSoftInputMode="adjustPan" 

y

android:configChanges="orientation|keyboardHidden" 

En index.html añadir lo traumalles señaló:

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

siguiendo esta ruta, no sería posible que el teclado cubra el cuadro de entrada. A partir de ahí, el usuario no verá lo que están escribiendo. – darewreck

+0

@darewreck hace un buen punto, porque tuve este problema exacto y implementé esta solución y no funcionará para mí por esta razón exacta.Para mí, creo que tendré que encontrar una solución donde pueda averiguar cómo determinar si se muestra el teclado, asignar una variable y alternar la visibilidad de mi barra inferior en función de eso, porque el comportamiento del campo es mejor con ajustes originales. La respuesta es correcta, pero el punto de darowreck es muy válido – chairmanmow

0

Añadir

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

a la cabeza-tag

+9

Esto no funciona. – AlexCheuk

+0

¿Agregaste la segunda etiqueta de actividad en AndroidManifest.xml? Cambie el nombre del paquete a com.phonegap.DroidGap para Phonegap 1.4.x y anterior – allesmi

0

arriba En Eu Vid's answer, deseo señalar que Córdova 6.4.0 y por encima tiene soporte para <edit-config /> que podemos utilizar para modificar AndroidManifest.xml.

Primero tendrá que agregar el atributo del espacio de nombres de Android. En su config.xml, agregue un nuevo atributo xmlns:android="http://schemas.android.com/apk/res/android" al <widget />. Su bloque de artilugios deben ser algo como esto:

<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"> 

Ahora agregue el siguiente código dentro <widget />:

<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity"> 
    <activity android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="adjustPan" /> 
</edit-config> 

Ahora cuando se llama cordova platform add android, la AndroidManifest.xml será generado con los ajustes anteriores.

Nota:

  • El código anterior no sobrescribe el bloque <activity> pero se funde con ella; solo reemplazará los atributos xml especificados.
  • Si ya ha llamado cordova platform add android de antemano, puede eliminarlo ingresando cordova platform rm android antes de volver a agregarlo.
Cuestiones relacionadas