2012-04-09 11 views
11

Attualmente sto usando PhoneGap per un'app mobile in via di sviluppo. Nella schermata di accesso, quando seleziono un campo di testo, la vista si restringe orizzontalmente quando la tastiera scorre. Questo succede solo per Android e non per iOS.PhoneGap: esiste un modo per impedire alla tastiera di ridimensionare la visualizzazione?

Questo mi riguarda perché ho una barra degli strumenti in basso che è position:absolute; bottom:0; e questa barra degli strumenti è spinto su in Android quando viene visualizzata la tastiera. In iOS, la tastiera si sovrappone semplicemente.

risposta

26

In AndroidManifest.xml sulla vostra attività principale aggiungere il seguente:

android:windowSoftInputMode="adjustPan" 

e

android:configChanges="orientation|keyboardHidden" 

In index.html aggiungere quello traumalles ha sottolineato:

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

seguendo questa rotta, non sarebbe possibile che la tastiera copra la casella di input. Da lì, l'utente non vedrà cosa stanno digitando. – darewreck

+0

@darewreck è un buon punto, perché ho avuto questo problema esatto e ho implementato questa soluzione e non funzionerà per me per questo motivo esatto.Per quanto mi riguarda, penso che dovrò trovare una soluzione in cui sia possibile capire come determinare se viene mostrata la tastiera, assegnare a una variabile e attivare la visibilità della barra inferiore in base a quella, perché il comportamento sul campo è migliore con impostazioni originali. La risposta è corretta, ma il punto di sfida è molto valido – chairmanmow

0

Aggiungere

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

alla testa-tag

+9

Questo non funziona. – AlexCheuk

+0

Hai aggiunto il secondo tag attività in AndroidManifest.xml? Cambiare il nome del pacchetto in com.phonegap.DroidGap per Phoneegap 1.4.xe versioni precedenti – allesmi

0

in alto su Eu Vid's answer, desidero sottolineare che Cordova 6.4.0 e soprattutto ha il supporto per <edit-config /> che possiamo usare per modificare AndroidManifest.xml.

Per prima cosa è necessario aggiungere l'attributo dello spazio dei nomi di Android. Nel tuo config.xml, aggiungi un nuovo attributo xmlns:android="http://schemas.android.com/apk/res/android" a <widget />. Il tuo blocco widget di dovrebbe essere simile a questo:

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

Ora aggiungere il seguente codice all'interno <widget />:

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

Ora quando si chiama cordova platform add android, il AndroidManifest.xml saranno generate con le impostazioni di cui sopra.

Nota:

  • Il codice precedente non sovrascrive blocco <activity> ma si fonde con esso; sostituirà solo gli attributi xml specificati.
  • Se hai già chiamato in anticipo cordova platform add android, puoi rimuoverlo inserendo cordova platform rm android prima di aggiungerlo di nuovo.
Problemi correlati