Остановите клавиатуру с нажатия кнопки ввода?
-
20-12-2019 - |
Вопрос
У меня есть активность с числовым Edittext, сидящим над кнопкой.
Я заметил, что если вы нажмете в тексте редактирования и используете жесткую клавиатуру, чтобы ввести некоторые числа, затем нажмите HARD Enter, что он сдвигает фокус на кнопку под текстом редактирования, а появляется клавиатура QWERTY.Как я могу остановить это?
Я пытался контролировать клавишу Enter следующим:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityEnterAmt);
final EditText editText = (EditText) findViewById(R.id.editTextEnterAmt);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
Log.i("Tag", "Enter pressed or IME Action Submit pressed");
saveButtonClick(editText);
}
return false;
}
});
}
.
Но я действительно хочу остановить его от открытия клавиатуры, когда вы нажимаете ввод.Я не очень понимаю, почему это делает это?
Спасибо
Решение
Я исправил эту проблему, закрыв мягкую клавиатуру, когда Edittext теряет фокус:
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (v == editText) {
if (hasFocus) {
((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(editText,
InputMethodManager.SHOW_FORCED); // open keyboard
} else {
((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
editText.getWindowToken(), 0); // close keyboard
}
}
}
});
. Не связан с StackOverflow