我正在尝试创建一个具有自动大写和自动更正功能的EditText
。我已经手动弄清楚如何添加InputFilter
以允许自动大写,但这仅在输入第一个字母之后,并且我没有运气自动修正(我试过了)创建一个使用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
的想法,为了不影响KeyListener
,文本仍然没有变化。
答案 0 :(得分:34)
通过XML,它会像这样设置。
android:inputType="textMultiLine|textNoSuggestions"
您只需在变量之间添加管道(|
)。我看到你是通过代码完成的,但我只是把它扔到那里作为参考。
答案 1 :(得分:7)
我希望你找到了问题的答案。答案可能会帮助那些后来进入线程的人。因此,您可以使用|
(管道)以与XML相似的方式设置多个标记。
类似的东西:
EditText mEditText = new EditText(this);
mEditText.setInputType(InputTpe.TYPE_TEXT_FLAG_CAP_CHARACTERS|InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
此外,根据您的situation,您可能需要使用setInputType
或setRawInputype
。
答案 2 :(得分:3)
放置在文本字段中的数据类型,用于帮助输入 方法决定如何让用户输入文本。常数在这里 对应于InputType定义的那些。通常你可以选择一个 单值,但有些可以按指示组合在一起。 将此属性设置为除none之外的任何内容也意味着 文字是可编辑的。
http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
所以看起来一般来说,你不能期望设置两个值。
另外,如果你看一下android:setInputType,它会说这映射到setRawInputType()方法,而不是setInputType()。您可以尝试调用setRawInputType()而不是setInputType()。
http://developer.android.com/reference/android/widget/TextView.html#setRawInputType(int)