web-dev-qa-db-ja.com

ソフトキーボードの[完了]ボタンを押したときにedittextのフォーカスを失う方法は?

私のxmlには7つのedittextボックスがあります。 OnFocusChangeListenerを使用してedittextから値を読み取り、その値を計算に使用しています。ソフトキーボードの[done]ボタンをクリックすると、edittextがフォーカスを失うようにしたいので、取得できます。 edittextの値。

24
SSS

clearFocusEditTextメソッドを呼び出して、ソフトキーボードから[完了]ボタンをクリックするとフォーカスが失われます。次のようにしてください:

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

また、edittext xmlにAndroid:imeOptions="actionDone"を追加します

66

アクティビティで一度にすべてのフォーカスを外すを考えてこの質問に出くわした人は、親のレイアウトにフォーカス(またはその問題のレイアウト)を設定できます。

findViewById(R.id.myLayout).requestFocus();
1
Julian Declercq

もう少し完全な答え

//  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;
    }
});
0
ucMedia

コトリン、それは私のために働いた:

main.clearFocus()

メインはルートConstraintLayoutです

0
norbDEV