2011-02-10 10 views
8

Mam ListView z EditText w każdym wierszu. W manifeście dla tego działania ustawiono windowSoftInputMode na adjustPan, więc gdy stukam w EditText, układ wygląda tak, że jest widoczny nad klawiaturą.EditText w ListView z windowSoftInputMode adjustPan

To działa po pierwszym dotknięciu EditText. Ale jeśli kliknę przycisk Wstecz, aby odrzucić klawiaturę, następnie ponownie dotknij tego samego EditText (bez stukając w cokolwiek innego, więc kursor pozostaje w pierwszym EditText), klawiatura powraca, ale układ nie przesuwa się tym razem. Wynika z tego, że EditText jest zasłonięty za klawiaturą.

Czy ktoś doświadczył tego zachowania/wie, jak go rozwiązać?

Dzięki

+0

Brzmi jak błąd dla mnie! – Dori

Odpowiedz

8

Nadal nie wiem, dlaczego tak się dzieje, ale mam rozwiązanie.

Mam podklasy EditText i nadpisane metody onKeyPreIme(int keyCode, KeyEvent event) następująco:

@Override 
public boolean onKeyPreIme(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     clearFocus(); 
    } 
    return super.onKeyPreIme(keyCode, event); 
} 

Teraz, gdy z powrotem klawisz jest wciśnięty, EditText rezygnuje ostrość. Ponowne dotknięcie go ma pożądane zachowanie.

+0

Dzięki Matt ... Cieszę się, że nie tylko zauważam wszystkie te anomalie w systemie Android. Mimo to wciąż młoda ... API w przyszłości będzie się kołysać. Kiedy masz trochę czasu, sprawdź tę inną wadę, którą wziąłem: http://stackoverflow.com/questions/15267137/android-adjustpan-not-working-after-edittext-container-has-been-translated Wielkie dzięki – Houston

+0

Fajny hack. Wielkie dzięki :) –

Powiązane problemy