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 шт):

Автор решения: DaisyB_ell

Вообщем, я сделала немного по другому. Решила отойти от кнопки back и обратить внимание на появление и скрытие самой клавиатуры. Для этого я воспользовалась библиотекой: https://github.com/yshrsmz/KeyboardVisibilityEvent

Всю вторую часть кода заменила на это:

 // Отслеживает клавиатуру и если она закрыта убирает фокус с editText
        KeyboardVisibilityEvent.setEventListener(
                this, new KeyboardVisibilityEventListener() {
                    @Override
                    public void onVisibilityChanged(boolean b) {
                        if (!b) {
                            mTextInputEditTextUin.clearFocus();
                        }
                    }
                });

Теперь когда клавиатура скрывается, фокус с editText убирается и картинка появляется вновь. Всё работает шикарно!

→ Ссылка