Подтвердить что ты не робот

Как потерять фокус edittext, когда нажата кнопка "done" на мягкой клавиатуре?

У меня есть 7 прямоугольников edittext в моем xml. Я использую OnFocusChangeListener для чтения значения из edittext, и я использую это значение для своих вычислений. Я хочу, чтобы мой edittext потерял фокус, когда я нажимаю кнопку done на мягкой клавиатуре. Так что я могу получить значение в редакторе.

4b9b3361

Ответ 1

Вызвать 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

Ответ 2

Если кто-то сталкивается с этим вопросом, задаваясь вопросом, как он может расфокусировать все сразу в своей деятельности, он может установить фокус на родительский макет (или любой макет в этом отношении).

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

Ответ 3

Просто чуть более полный ответ

//  This will change the ‘RETURN button in your the EditTexts 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;
    }
});