EditText.setInputType 与 setRawInputType

Posted

技术标签:

【中文标题】EditText.setInputType 与 setRawInputType【英文标题】:EditText.setInputType vs. setRawInputType 【发布时间】:2012-04-13 14:00:35 【问题描述】:

EditText.setInputType 和 setRawInputType 有什么区别。

我有一个应该允许所有字符的字段,但我有一个在数字和字母键盘之间切换的模式按钮。

所以当它们是“零件号”搜索模式时我想要数字键盘,而当它们是“描述”搜索模式时我想要字母键盘。

android OS 2.2 或更高版本。

【问题讨论】:

【参考方案1】:

setRawInputType()通常用于初始化视图时,在自定义视图的构造函数中或在活动的onCreate()方法中等。这与使用XML属性android:inputType设置inputType相同。例如:

setContentView(R.layout.main);
mEditText = (EditText) findViewById(R.id.edit_text);
mEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
...

在您的情况下更改为编辑器显示的软键盘模式 您必须即时致电setInputType(),它还负责重新启动软键盘。

setInputType(InputType.TYPE_CLASS_NUMBER) 将键盘布局更改为数字文本 setInputType(InputType.TYPE_CLASS_TEXT) 将键盘布局更改为普通文本

【讨论】:

为什么 setInputType(InputType.TYPE_CLASS_TEXT) 会改变 EditText? 我在使用 raw 时遇到了一个错误,这为我解决了这个问题。谢谢【参考方案2】:

setInputType

在 API 级别 3 中添加

public void setInputType(int 类型)

使用为 EditorInfo#inputType 定义的常量设置内容的类型。这将通过调用 setKeyListener(android.text.method.KeyListener) 来更改键侦听器,以匹配给定的内容类型。如果给定的内容类型是 EditorInfo#TYPE_NULL 则不会为此文本视图显示软键盘。请注意,如果您更改输入类型的 EditorInfo#TYPE_TEXT_FLAG_MULTI_LINE 标志,则会修改最大显示行数(参见 setMaxLines(int))。

setRawInputType

在 API 级别 3 中添加 公共无效 setRawInputType (int 类型) 直接更改文本视图的内容类型整数,无需修改任何其他状态。

相关的 XML 属性:

android:inputType

【讨论】:

以上是关于EditText.setInputType 与 setRawInputType的主要内容,如果未能解决你的问题,请参考以下文章

Android EditText Capital Characters

如何在editText聚焦时隐藏键盘

以编程方式添加TextInputLayout

仅显示 EditField 的数字键盘

将 EditText 设置为 TYPE_TEXT_FLAG_CAP SENTENCES 会删除 RETURN 键

正则表达式 (\S+?) 与 (\S+)) [重复]