android 如何在按下软键盘中的“done”按钮时丢失edittext的焦点?

j5fpnvbx  于 2022-12-02  发布在  Android
关注(0)|答案(5)|浏览(249)

我的xml中有7个edittext框。我正在使用OnFocusChangeListener从edittext中读取值,并使用该值进行计算。我希望当我单击软件www.example.com中的done按钮时,我的edittext失去焦点keyboard.so这样我就可以获得edittext中的值。

rqenqsqc

rqenqsqc1#

调用EditTextclearFocus方法以在从软键盘单击完成按钮时失去焦点。执行如下操作:

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;
    }
});

并在编辑文本xml中添加android:imeOptions="actionDone"

zazmityj

zazmityj2#

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

findViewById(R.id.myLayout).requestFocus();
5ktev3wc

5ktev3wc3#

只是一个更完整的答案

//  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;
    }
});
6qfn3psc

6qfn3psc4#

Kotlin,这对我很有效:

main.clearFocus()

main是根ConstraintLayout

2wnc66cl

2wnc66cl5#

Kotlin版本的ρяσ ρ я K's answer:

editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        editText.clearFocus()
    }
    false
}

相关问题