Я создал приложение с чатом, которое выглядит следующим образом:
Теперь, когда я нажимаю EditText, мне хотелось его скрыть BottomNavigationBar, и он выглядит так:
Однако, когда я закрывал клавиатуру, мне снова показывался 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
, но по какой-то причине он всегда вызывается дважды, и поэтому я думаю, что это делает дно видимым, но возвращает его скрытый.
Есть ли способ скрыть и показать его правильно?
Спасибо