Android, проблема с появлением картинки при скрытии клавиатуры
У меня есть экран с картинкой, кнопкой и editText. Когда editText находится в фокусе у меня появляется клавиатура, кнопка подымается над клавиатурой, а картинку я делаю Invisible. Когда фокус пропадает, я скрываю клаву, и делаю картинку видимой. Это работает с данным кодом:
mTextInputEditTextPhone = findViewById(R.id.editTextInputPhone);
mImageView = findViewById(R.id.imageViewPhone);
mTextInputEditTextPhone.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (b) {
mTextInputEditTextPhone.setHint("+7(999)999-99-99");
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mTextInputEditTextPhone, InputMethodManager.SHOW_IMPLICIT);
TextInputEditTextPhone.requestFocus();
mImageView.setVisibility(View.INVISIBLE);
} else {
mTextInputEditTextPhone.setHint("");
mImageView.setVisibility(View.VISIBLE);
}
}
});
// Скрытие клавиатуры и фокуса при нажатии в любую часть экрана
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
mTextInputEditTextPhone.clearFocus();
hideKeyboard();
}
return super.dispatchTouchEvent(ev);
}
private void hideKeyboard() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
}
Но если нажать назад, клавиатура скрывается, но фокус остаётся и соответственно картинка не появляется вновь, пока не нажать на любое место на экране. Как сделать так чтобы при скрытии клавиатуры (посредством кнопки назад) у меня появлялась картинка?
onBackPressed() и onKeyDown() не работают, когда клавиатура открыта кнопка назад не работает как надо, а только скрывает клаву.
Заранее благодарю за помощь!
Ответы (1 шт):
Вообщем, я сделала немного по другому. Решила отойти от кнопки back и обратить внимание на появление и скрытие самой клавиатуры. Для этого я воспользовалась библиотекой: https://github.com/yshrsmz/KeyboardVisibilityEvent
Всю вторую часть кода заменила на это:
// Отслеживает клавиатуру и если она закрыта убирает фокус с editText
KeyboardVisibilityEvent.setEventListener(
this, new KeyboardVisibilityEventListener() {
@Override
public void onVisibilityChanged(boolean b) {
if (!b) {
mTextInputEditTextUin.clearFocus();
}
}
});
Теперь когда клавиатура скрывается, фокус с editText убирается и картинка появляется вновь. Всё работает шикарно!