【发布时间】:2012-04-04 00:28:33
【问题描述】:
我正在尝试创建一个EditText,并实现了自动大写和自动更正。我已经手动弄清楚如何添加InputFilters 以允许自动大写,尽管这仅在输入第一个字母之后有效,而且我没有运气自动更正(我试图创建一个使用 AutoText 的 InputFilter,但我不确定它是如何工作的)。理想情况下,我可以只使用 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,文字依旧没有变化。
【问题讨论】:
标签: android android-edittext bitwise-operators input-filtering