Phi*_*hil 11 android bitwise-operators input-filtering android-edittext
我正在尝试创建一个EditText
自动大写和自动更正实现.我已经手动想出如何添加InputFilter
s以允许自动大写,虽然这仅在键入第一个字母后才有效,而且我没有运气自动校正(我试图创建一个使用的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);
Run Code Online (Sandbox Code Playgroud)
请注意,我只对EditText
在代码中创建此代码的解决方案感兴趣- 而不是通过XML.
编辑
我找到了描述TextKeyListener的声音新文档,但是在尝试使用它之后:
mEditText.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.CHARACTERS, true));
Run Code Online (Sandbox Code Playgroud)
并且使用@ farble1670的使用思路setRawInputType
,以免影响KeyListener
s,文本仍然没有变化.
f1v*_*our 35
通过XML,它将被设置为这样.
android:inputType="textMultiLine|textNoSuggestions"
Run Code Online (Sandbox Code Playgroud)
您只需|
在变量之间添加一个pipe().我看到你是通过代码完成的,但我只是把它扔到那里作为参考.
我希望你找到了问题的答案.答案可能会帮助那些后来进入线程的人.因此,您可以使用|
(管道)以与XML相似的方式设置多个标记.就像是:
EditText mEditText = new EditText(this);
mEditText.setInputType(InputTpe.TYPE_TEXT_FLAG_CAP_CHARACTERS|InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
Run Code Online (Sandbox Code Playgroud)
此外,根据您的情况,您可能想要使用setInputType
或setRawInputype
.
是的,看起来应该可行。然而,查看文档,
放置在文本字段中的数据类型,用于帮助输入法决定如何让用户输入文本。这里的常量对应于InputType 定义的常量。通常,您可以选择单个值,但也可以按照指示将某些值组合在一起。将此属性设置为除 none 之外的任何值也意味着文本是可编辑的。
http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
所以看起来一般来说,你不能指望设置两个值。上面的链接显示了哪些标志可以组合在一起。
另外,如果你查看 android:setInputType,它会说 this 映射到setRawInputType()
方法,而不是setInputType()
。您可以尝试拨打电话setRawInputType()
而不是setInputType()
。
http://developer.android.com/reference/android/widget/TextView.html#setRawInputType(int)
归档时间: |
|
查看次数: |
15080 次 |
最近记录: |