我正在尝试创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
,文本仍然没有改变。
通过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);
此外,根据您的情况,您可能想要使用setInputType
或setRawInputype
。
是的,这似乎应该工作。 不过,看文档,
放置在文本字段中的数据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 )