Как перехватить нажатие клавиши виртуальной клавиатурой и отключить ее для EditText в Android? - PullRequest
1 голос
/ 21 сентября 2011

Мне нужно контролировать нажатые кнопки, прежде чем они перейдут в мой виджет EditText. Это должно работать как фильтр. Например: мне нужно, чтобы пользователь мог заполнить EditText только цифрами 1,2,3,4,5, другие символы должны игнорироваться. Поэтому часть кнопок на виртуальной клавиатуре должна быть отключена, или мне нужно отловить последний нажатый символ, проанализировать его и отключить для EditText.

Кто знает, как решить эту проблему?

Спасибо ..

Ответы [ 2 ]

0 голосов
/ 21 сентября 2011

Вам, вероятно, понадобится InputFilter .Например, чтобы разрешить только цифры, знак и десятичную точку:

 editText.setFilters(DigistKeyListener.getInstance(true, true));
0 голосов
/ 21 сентября 2011
    statusEdt.addTextChangedListener(new TextWatcher(){
        public void afterTextChanged(Editable s) {}
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            //do stuff
            charTxt.setText(statusEdt.getText().length() + "/140");
        }
    });

Я использовал этот TextChangedListener (TextWatcher), чтобы вести подсчет количества символов, введенных в EditText для клиента Twitter, который я сделал.Возможно, вы могли бы использовать такой слушатель.Вы захотите переопределить beforeTextChanged или onTextChanged.Эти методы передадут вам любую набранную CharSequence.Вы можете проверить, что было введено, и, если это неверный ввод, вы можете удалить его, вызвав setText () и передав то, что было набрано до сих пор, минус недопустимые символы.

...