Я пытаюсь создать EditText с автоматической капитализацией и автоматической коррекцией. Я вручную выяснил, как добавить InputFilter, чтобы разрешить автокапитализацию, хотя это работает только после ввода первой буквы, и мне не повезло с автоматической коррекцией (я попытался создать 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.
Edit
Я нашел звуковую новую документацию, описывающую TextKeyListener, однако после ее использования:
mEditText.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.CHARACTERS, true));
и используя @farble1670 идею использования setRawInputType, чтобы не влиять на KeyListener s, текст до сих пор не изменяется.