Остановите клавиатуру с нажатия кнопки ввода?

StackOverflow https://stackoverflow.com//questions/24003525

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top