У меня есть два EditText
виджета, и я хочу скрыть клавиатуру, когда пользователь нажимает за их пределами (если клавиатура все еще активна в это время, очевидно).Для этого я использую setOnFocusChangeListener
на обоих из них следующим образом:
eTNom=convertView.findViewById(R.id.EditText_nom);
eTNom.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus)
hideKeyboard(v);
}
});
Другой setOnFocusChangeListener
обрабатывается точно так же.
Однако это не работает, потому чтометод onFocusChange вызывается несколько раз (4-5) каждый раз, когда я нажимаю на одну из двух EditText
.Это приводит к быстрому переключению переменной hasFocus
между истинным и ложным после вызова метода, и клавиатура обнаруживается только в течение очень короткого момента.
Вот именно то, что происходит: https://imgur.com/ZFjXPPz
Я видел этот вопрос один раз, но принятый ответ предложил добавить android:windowSoftInputMode="adjustPan"
в файл манифеста.Я сделал это, но это не решило мою проблему.Я также видел людей, которые рекомендовали установить атрибуты clickable , focusable и focusableInTouchMode в true
в родительском макете, что я и сделал, но это все же делаетне работает.
Я думал, что проблема возникла из-за того, что у меня есть два EditText
виджета, но когда я удалил один из моих действий, у меня все еще была та же проблема, так что я в значительной степени потерян сейчас и любойТакая помощь будет очень признательна.
Спасибо.