Android EditText программная клавиатура вопрос - PullRequest
2 голосов
/ 01 августа 2011

У меня есть EditText, который должен получать пользовательский ввод для номера места в самолете (например, 17G, 5A и т. Д.). Проблема в том, что я устанавливаю тип ввода EditText на текст, он всегда открывает экранную клавиатуру с текстом.Но мой ввод всегда начинается с цифр, поэтому пользователь должен постоянно переключать клавиатуру на цифры и обратно.Вопрос в том, как настроить клавиатуру для открытия текстовой клавиатуры на той части, где расположены цифры?Я пытаюсь поставить android: inputType = "numeric", но он просто открывает цифровую клавиатуру, и после этого невозможно ввести текст.

1 Ответ

1 голос
/ 10 ноября 2016

Поскольку номер места (ваш пример) будет иметь различное количество номеров, довольно сложно угадать, когда переключаться с одного типа клавиатуры на другой.

В противном случае вы можете программно изменить тип ввода EditText следующим образом:

((EditText) mView.findViewById(R.id.et_seat_number)).addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
        }

        @Override
        public void afterTextChanged(Editable editable) {

            EditText etSeatNumber = (EditText) mView.findViewById(R.id.et_seat_number);
            if(editable.length() > 2)
                etSeatNumber.setInputType(InputType.TYPE_CLASS_NUMBER);
            else{
                etSeatNumber.setInputType(InputType.TYPE_CLASS_TEXT);
            }
        }
    });

Также вы можете использовать параметры IME на программной клавиатуре для изменения типа ввода с клавиатуры.https://stackoverflow.com/a/40526750/6672482

...