2012-10-31 9 views
5

Robię aplikację Android Phonegap.
Ustawiam editText pod CordovaWebView. Chcę uzyskać wydarzenie pokazujące/ukryte na klawiaturze.
Spróbuj obliczyć wysokość widoku, ale kończy się niepowodzeniem. Po ustawieniu focusText wyświetlana jest klawiatura. Ale CordovaWebView idzie w górę, a rozmiar widoku nie ulega zmianie. Więc nie mogę dostać zdarzenia pokazanego na klawiaturze.

Odbiornik zdarzeń klawiaturowych w systemie Android

Dlaczego widok idzie w górę?

Oto część mojego kodu.

główną działalność 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> 

proszę o pomoc ....

Odpowiedz

3

Czy próbowałeś słuchać imprezy "showkeyboard" i "hidekeyboard"? Powinny być wystrzeliwane za każdym razem, gdy klawiatura jest pokazywana/ukryta.

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

Dzięki! Próbowałem. W CordovaWebView zdarzenia te były uruchamiane poprawnie, ale gdy editText stracił ostrość, zdarzenie showkeyboard zostało uruchomione ... I przy pomocy "this.getWindow() .setSoftInputMode (LayoutParams.WRAP_CONTENT);" showkeyboard wystrzeliwany, gdy pokazano editText ... – Yajap

+0

Zmieniono na "to .getWindow(). setSoftInputMode (LayoutParams.WRAP_CONTENT); " do "this.getWindow(). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);", zdarzenie wywołane !!!!! Dzięki!!! – Yajap

+0

Cześć Simon, to wydarzenie nie jest uruchamiane na urządzeniach z systemem iOS, czy istnieje obejście tego problemu. –