У меня есть 7 прямоугольников edittext в моем xml. Я использую OnFocusChangeListener для чтения значения из edittext, и я использую это значение для своих вычислений. Я хочу, чтобы мой edittext потерял фокус, когда я нажимаю кнопку done на мягкой клавиатуре. Так что я могу получить значение в редакторе.
Как потерять фокус edittext, когда нажата кнопка "done" на мягкой клавиатуре?
Ответ 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;
}
});