0

在我的布局中,我有一个editText和一个button

如果editText获得或失去焦点,键盘会显示或隐藏什么。为了实现这一点,我添加了一个OnFocusChangeListenereditText然后我隐藏或显示正在查看hasFocus标志的键盘。

问题是,当editText有焦点并且如果我在按钮中触摸键盘可见时,focusChangeListener会调用 ,我隐藏键盘但button onClickListener不会调用。隐藏键盘后,我必须再次单击该按钮。

postDelayed({ hideKeyboard() }, 500)相反,如果在 editText 失去焦点时我有一个延迟 ( ),onClickListener则会调用 。

添加延迟似乎是一种技巧。如何隐藏键盘并仍然收到按钮点击?

4

1 回答 1

0

使用此方法单击按钮时手动隐藏键盘并删除焦点侦听器

public void hideKeyboard(View view) {
    if (view != null) {
         InputMethodManager inputMethodManager = (InputMethodManager) 
            getSystemService(Context.INPUT_METHOD_SERVICE);
         inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
}

专注于EditText屏幕的启动,您可以<requestFocus/>在 xml中使用

于 2019-11-06T11:32:28.437 回答