Cordova + Android – android-windowSoftInputMode adjustPan no funciona
Estoy usando Cordova 5.4.0 y tengo esto en mi config.xml
:
<preference name="fullscreen" value="false" /> <preference name="android-windowSoftInputMode" value="adjustPan" />
Pero después de la construcción, en mi AndroidManifest.xml
todavía hay
- Mostrar barra de estado en Android en la aplicación PhoneGap (es decir, evitar la pantalla completa)
- Android - Cordova 3.5.0 deviceready no disparar después de instalar plugin de medios
- Se rehusó a cargar el script porque infringe la siguiente directiva de política de seguridad de contenido
- Cómo utilizar Phonegap Android Plugin de notificación local
- Visual Studio Enterprise 2015 RC Cordova Android Construir código de salida 1
android:windowSoftInputMode="adjustResize"
¿Por qué no funciona? ¿Y cómo puedo solucionarlo?
- AddEventListener ('exit') a inappbrowser en PhoneGap
- Manera correcta de almacenar la autenticación en una aplicación Phonegap
- La aplicación Cordova se bloquea al usar Chrome DevTools
- Desginación de una aplicación móvil para una aplicación Spring MVC existente (Spring Mobile o Phonegap)
- Phonegap - build for android -> Clase no encontrada: javac1.8
- TypeError "No se puede establecer la conexión de propiedad de # <Navigator>" en la consola al actualizar el proyecto a la versión más reciente de Cordova 4.0.0
- Apertura de PowerPoint y documentos de palabra en Android usando Cordova
- Cómo detectar el cierre del teclado evento en el dispositivo android con javascript
La preferencia android-windowSoftInputMode
parece estar respaldada por Phonegap solamente, no por Cordova.
Solución 1: utilice un complemento
Agregue el complemento cordova-custom-config :
cordova plugin add cordova-custom-config
Agregue la siguiente preferencia:
<platform name="android"> <preference name="android-manifest/application/activity/@android:windowSoftInputMode" value="adjustPan" /> ... </platform>
Solución 2: agregue un gancho before_build
Agregue el siguiente gancho a config.xml:
<hook type="before_build" src="scripts/appBeforeBuild.js" />
Agregue un archivo appBeforeBuild.js al directorio de scripts con el siguiente contenido:
#!/usr/bin/env node var fs = require('fs'); var path = require('path'); var pathToManifest = path.join(__dirname, '../platforms/android', 'AndroidManifest.xml'); if(fs.existsSync(pathToManifest)) { var config = fs.readFileSync(pathToManifest, 'utf8'); var result = config.replace(/(android:windowSoftInputMode=").*?(")/, '$1adjustPan$2'); fs.writeFileSync(pathToManifest, result, 'utf8'); console.log('Set android:windowSoftInputMode to adjustPan'); } else { console.log('Could not find AndroidManifest to set android:windowSoftInputMode'); }
Este script utilizará Node para buscar el AndroidManifest y hacer un reemplazo de regex en el atributo android:windowSoftInputMode
(primera aparición solamente).
Prueba éste
-
Index.html
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width, height=device-height">
-
Config.xml
<preference name="android-windowSoftInputMode" value="adjustResize|adjustPan" />
Parece que estás cambiando el AndroidManifest.xml incorrecto. En su aplicación, bajo \ platform \ android … encontrará el archivo .xml, tendrá que cambiarlo.
También puede utilizar el cordova-custom-config
cordova plugin add cordova-custom-config
Y agrega esto a tu config.xml
<platform name="android"> <preference name="android-manifest/application/activity/@android:windowSoftInputMode" value="adjustPan" /> </platform>