Как установить несколько типов ввода в EditText на Android?

Я пытаюсь создать EditTextс автозаглавными буквами и автоматическим исправлением. Я вручную выяснил, как добавить InputFilters, чтобы разрешить автозаглавные буквы, хотя это работает только после ввода первой буквы, и мне не повезло с автокоррекцией (я пытался создать InputFilter, который использовал AutoText, но я не уверен, как все это работает). В идеале я мог бы просто использовать EditText.setInputType(...) для обработки всего, но пока это не сработало. Есть ли способ добиться этого? Моя неудачная попытка показана ниже (я просто получаю нормальный ввод).

EditText mEditText = new EditText(this);
int inputType = InputType.TYPE_CLASS_TEXT;
if (auto_capitalize) {
    inputType = mEditText.getInputType() | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS;
}
if (auto_correct) {
    inputType = mEditText.getInputType() | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT;
}
mEditText.setInputType(inputType);

Обратите внимание, меня интересуют только решения для создания этого EditTextв коде, а не через XML.

Редактировать

Я нашел новую документацию, описывающую TextKeyListener, однако после попытки использовать это:

mEditText.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.CHARACTERS, true));

и использования идеи @farble1670 об использовании setRawInputType, чтобы не влияют на KeyListeners, текст по-прежнему не меняется.

11
задан Phil 19 March 2012 в 14:33
поделиться