代码之家  ›  专栏  ›  技术社区  ›  Jack Guo

当键盘被关闭时取消对EditText的聚焦

  •  1
  • Jack Guo  · 技术社区  · 7 年前

    我想完成一个简单的任务 不集中注意力 EditText (不隐藏光标)当键盘被关闭时,通过点击完成或返回按钮。到目前为止我只能找到

    window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)

    但只有当活动刚开始时才是好的。键盘关闭后,文本字段将处于尴尬的聚焦状态。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Jeeter    7 年前

    当键盘被关闭时,您可以监听事件,然后使用 editText.clearFocus(); 当那件事发生的时候。

    参考 this answer 用于监听键盘关闭事件

        2
  •  0
  •   Hkh    7 年前

    您可以清除编辑文本中的焦点,还可以管理启用/禁用编辑文本。

        3
  •  0
  •   Adam Johns    5 年前

    我不敢相信这是解决这个问题最简单的方法(真的,安卓?):

    public class CustomEditText extends EditText {
    
        public CustomEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.setOnEditorActionListener(new OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if (actionId == KeyEvent.KEYCODE_ENDCALL) {
                        InputMethodManager imm = (InputMethodManager)v.getContext()
                            .getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.hideSoftInputFromWindow(CustomEditText.this.getWindowToken(), 0);
                        CustomEditText.this.clearFocus();
                        return true;
                    }
                    return false;
                }
            });
        }
    
        @Override
        public boolean onKeyPreIme(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
                this.clearFocus();
            }
            return super.onKeyPreIme(keyCode, event);
        }
    
    }