30

我的 xml 中有 7 个编辑文本框。我正在使用 OnFocusChangeListener 从 edittext 读取值,并且我正在使用该值进行计算。当我单击软键盘中的完成按钮时,我想让我的 edittext 失去焦点。这样我就可以得到编辑文本中的值。

4

4 回答 4

77

从软键盘单击完成按钮时调用失去焦点clearFocus的方法。EditText这样做:

editText.setOnEditorActionListener(new OnEditorActionListener() {        
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){
            //Clear focus here from edittext
             editText.clearFocus();
        }
    return false;
    }
});

并添加android:imeOptions="actionDone"edittext xml

于 2012-08-16T06:31:48.097 回答
2

如果有人遇到这个问题,想知道如何在他们的活动中一次取消所有焦点,他们可以将焦点设置在父布局(或任何布局)上。

findViewById(R.id.myLayout).requestFocus();
于 2019-01-16T21:28:15.847 回答
0

只是更完整的答案

//  This will change the ‘RETURN’ button in your the EditText’s soft keyboard to a ‘DONE’ button.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
//  Use the InputMethodManager to close the soft keyboard
editText.setOnEditorActionListener(new OnEditorActionListener() {        
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){
            //Clear focus here from edittext
            InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
    return false;
    }
});
于 2019-06-06T17:27:19.673 回答
0

Kotlin,它对我有用:

main.clearFocus()

main 是根 ConstraintLayout

于 2019-11-10T14:57:54.250 回答