Android: ListView с EditTexts портит фокус и IME
У меня есть ListActivity с пользовательскими элементами, где каждый элемент имеет свой собственный TextEdit. Нажатие на любую из них поднимает IME-клавиатуру и вызывает изменение размера ListView. Так что EditText, который недавно получил фокус нажатием, теряет его. Второе нажатие требуется, чтобы поставить его сфокусированным или уверенным. Это происходит только тогда, когда у меня есть ход, чем 1 пунктов в списке.
Есть ли способ открыть IME и сохранить фокус на EditText одним нажатием?
2 ответа
Вы хотите изменить размер списка? Можете ли вы переопределить ListView.onSizeChanged и использовать его вместо "всплывающего" имени для super.onSizeChanged (при условии, что ваше предположение об источнике ошибок верное)?
Я решил это, сохранив отредактированный текст EditText в переменной и попросив сосредоточиться на нем после задержки. Это взлом, но иногда Android требует взлома.
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
EditText editText = getListAdapter().tappedEditText;
if (editText != null) {
editText.requestFocus();
}
}
}, 100);