Скрыть нижнюю панель навигации при открытой клавиатуре - PullRequest
0 голосов
/ 07 февраля 2020

Я создал приложение с чатом, которое выглядит следующим образом:

enter image description here

Теперь, когда я нажимаю EditText, мне хотелось его скрыть BottomNavigationBar, и он выглядит так:

enter image description here

Однако, когда я закрывал клавиатуру, мне снова показывался BottomNavigationBar. Но это не так.

Я использую следующий код для этого:

sView = findViewById(R.id.Sv_Chats);
sView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    public void onGlobalLayout() {
        heightDiff = sView.getRootView().getHeight() - sView.getHeight();
        Log.d( "HEIGHT", Integer.toString( heightDiff ));
    }
});

final EditText editText = findViewById(R.id.et_Message);
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!isVisibleWhileSoftKeyboardShowing(editText) && hasFocus) {
            sView.postDelayed(new Runnable() {
                @Override
                public void run() {
                    sView.smoothScrollBy(0, 200);
                    bottomNavigationView.setVisibility(View.GONE);
                }
            }, 200);
        }
    }
});

Я пытался использовать:

    final EditText editText = findViewById(R.id.et_Message);
    editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!isVisibleWhileSoftKeyboardShowing(editText) && hasFocus) {
                sView.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        sView.smoothScrollBy(0, 200);
                        //bottomNavigationView.setVisibility(View.GONE);
                    }
                }, 200);
            } else {bottomNavigationView.setVisibility(View.VISIBLE)}
        }
    });

Однако, это не так не работает.

Кроме того, я установил журнал, чтобы показать мне значение heightDiff, но по какой-то причине он всегда вызывается дважды, и поэтому я думаю, что это делает дно видимым, но возвращает его скрытый.

Есть ли способ скрыть и показать его правильно?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...