У меня есть форма входа в систему с edittexts и кнопка входа (подключиться). Когда пользователь щелкает по тексту редактирования, открывается клавиатура, а когда он нажимает кнопку входа (подключение), клавиатура исчезает. Проблема заключается в том, что если пользователь нажимает текст редактирования после нажатия кнопки входа в систему, клавиатура отображается в течение секунды, а затем исчезает. Использование rootview для вычисления, показывает ли клавиатура или нет, так как это кажется самым простым способом в соответствии со стековым потоком. Как сделать так, чтобы после нажатия кнопки отображалась клавиатура?
Onclicklistener
boolean clicked=false;
connect.setOnClickListener(v -> {
clicked=true;
keyboard();
});
метод клавиатуры
void keyboard(){
InputMethodManager inputManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
final View activityRootView = findViewById(R.id.wrap);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
activityRootView.getWindowVisibleDisplayFrame(r);
if (clicked) {
int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
if (heightDiff > 0.25 * activityRootView.getRootView().getHeight()) {
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
});
}