如何在Android上的EditText中设置多个inputtypes?

我正在尝试创build一个带有自动大写和自动更正function的EditText 。 我已经手动计算出如何添加InputFilter来允许自动大写,尽pipe这只能input第一个字母后才起作用,而且我没有使用自动更正(我尝试创build一个使用AutoText的InputFilter,米不知道如何工作)。 理想情况下,我可以使用EditText.setInputType(…)来处理所有事情,但到目前为止这还没有奏效。 有没有办法做到这一点? 我的失败尝试如下所示(我只是得到正常的input)。

 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); 

请注意,我只对在代码中创buildEditText解决scheme感兴趣,而不是通过XML。

编辑

我发现了很好的描述TextKeyListener的新文档,然而在尝试使用它之后:

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

并使用@ farble1670的使用setRawInputType的想法,以免影响KeyListener ,文本仍然没有改变。

Solutions Collecting From Web of "如何在Android上的EditText中设置多个inputtypes?"

通过XML将会像这样安装。

 android:inputType="textMultiLine|textNoSuggestions" 

您只需在variables之间添加一个pipe道( | )。 我看你是通过代码来做的,但我只是把它扔在那里作为参考。

我希望你已经find了这个问题的答案。 答案可能会帮助那些稍后来到线程的人。 所以,你可以像使用XML一样在XML中设置多个标签 (pipe)。 就像是:

 EditText mEditText = new EditText(this); mEditText.setInputType(InputTpe.TYPE_TEXT_FLAG_CAP_CHARACTERS|InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); 

此外,根据您的情况,您可能想要使用setInputTypesetRawInputype

是的,这似乎应该工作。 不过,看文档,

放置在文本字段中的数据types,用于帮助input法决定如何让用户input文本。 这里的常量对应于由InputType定义的常量。 一般来说,您可以select一个值,但有些可以按照指示组合在一起。 将此属性设置为除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