2012-10-31 16 views
5

Sto facendo un'applicazione Android PhoneGap.
Ho impostato editText sotto CordovaWebView. Voglio ottenere l'evento show/hide della tastiera.
Provare a calcolare l'altezza della vista, ma fallire. Quando editText ha lo stato attivo, viene mostrata la tastiera. Ma CordovaWebView sale e le dimensioni della vista non cambiano. Quindi non posso ottenere l'evento mostrato dalla tastiera.

Listener di eventi Softkeyboard in Android

Perché la visualizzazione sale?

qui è il parziale del mio codice.

MainActivity onCreateMethod()

int layoutId = R.layout.blank; 
layout = new LinearLayout(this); 
setContentView(layoutId); 
layout.setOrientation(LinearLayout.VERTICAL); 

textedit = ((Activity) this).getLayoutInflater().inflate(R.layout.main,null); 

layout.addView((View) appView.getParent()); 
layout.addView(textedit); 

layout.getChildAt(0).setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1)); 
setContentView(layout); 

res/layout/blank.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
</LinearLayout> 

res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <EditText 
    android:id="@+id/editText1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
</LinearLayout> 

Please Help ....

risposta

3

Hai provato ad ascoltare il eventi "showkeyboard" e "hidekeyboard"? Dovrebbero essere attivati ​​ogni volta che la tastiera virtuale viene visualizzata/nascosta.

document.addEventListener("showkeyboard", function() { 
    console.log("Yay the keyboard is here"); 
}, false); 
document.addEventListener("hidekeyboard", function() { 
    console.log("Boo the keyboard is gone"); 
}, false); 
+0

Grazie! Ho provato. In CordovaWebView questi eventi sono stati attivati ​​correttamente, ma quando editText ha perso l'attivazione showkeyboard evento attivato ... E con "this.getWindow(). SetSoftInputMode (LayoutParams.WRAP_CONTENT);" showkeyboard attivato quando editText viene mostrato ... – Yajap

+0

è stato modificato in "questo . .getWindow() setSoftInputMode (LayoutParams.WRAP_CONTENT);" a "this.getWindow(). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);", evento attivato !!!!! Grazie!!! – Yajap

+0

Ciao Simon, questo evento non è sparato sui dispositivi iOS, c'è anche una soluzione per questo. –