EditText в ListView с windowSoftInputMode AdjustPan - PullRequest
8 голосов
/ 10 февраля 2011

У меня есть ListView с EditText в каждом ряду. Я установил windowSoftInputMode в adjustPan в манифесте для этого действия, поэтому, когда я нажимаю на EditText панели макета, чтобы он был виден над клавиатурой.

Это работает при первом нажатии EditText. Но если я нажму кнопку «Назад», чтобы закрыть клавиатуру, а затем снова коснусь того же самого EditText (не нажимая ничего другого, чтобы курсор остался на первом EditText), клавиатура вернется, но на этот раз раскладка не будет панорамироваться. Результатом этого является то, что EditText скрыт за клавиатурой.

Кто-нибудь испытывал такое поведение / знает, как его решить?

Спасибо

1 Ответ

8 голосов
/ 10 февраля 2011

До сих пор не уверен, почему это происходит, но у меня есть решение.

Я подкласс EditText и переопределил метод onKeyPreIme(int keyCode, KeyEvent event) следующим образом:

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

Теперь, когда нажата клавиша «Назад», EditText перестает фокусироваться. Затем, нажав его снова, вы получите желаемое поведение.

...