EditText限制用户的输入 inputType

来源:互联网 发布:芒果tv软件下载 编辑:程序博客网 时间:2024/04/24 04:19

有输入必有验证。为了防止用户随便输入确保提交数据的合法性,程序不得不在文本输入框(EditText)中增加限制或验证。

关于输入类型有数字、字母、邮箱、电话等形式,这些具体得根据业务来。那么Android系统中EditText是怎样限制用户输入的呢?

下面以数字、电话为例讲述EditText怎么设置输入类型,其他类型可以参考InputType类。

 

首先在XML 文件中有这样一个属性android:inputType  在这里我们限制其输入法为字符,数字,邮箱,电话,时间等等。

在java代码中我们可以使用方法setInputType()方法来实现对editText 控件的输入限制。

 列出几种常见的示例:

1. 只能输入数字

 

et.setInputType(InputType.TYPE_CLASS_NUMBER);

 

2. 只能输入电话号码

 

et.setInputType(InputType.TYPE_CLASS_PHONE);//电话

 

3. 邮箱地址

 

et.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); 

 

4. 禁止输入任何文本

 

et.setInputType(InputType.TYPE_NULL); // 禁止输入(不弹出输入法) 

上述也是隐藏输入法的一种方式,还有另外一种隐藏办法,可查看android隐藏IME(输入法)输入框

 

在setInputType(InputType.TYPE_****)中主要是四类:

InputType.TYPE_CLASS_NUMBER

InputType.TYPE_CLASS_DATETIME

InputType.TYPE_CLASS_PHONE

InputType.TYPE_CLASS_TEXT

 

然后在每个下面还有具体的类型,比如NUMBER

InputType.TYPE_CLASS_NUMBER              对应XML属性中的android:inputType="number",只能为数字

InputType.TYPE_NUMBER_FLAG_SIGNED       对应XML属性中的android:inputType="numberSigned"  为有符号的数字,前面可以加正负号

InputType.TYPE_NUMBER_FLAG_DECIMAL     对应XML属性中的android:inputType="numberDecimal"  为可以有小数点的数字

 

其他的InputType.TYPE_DATETIME_******   , InputType.TYPE_TEXT_******  也是这样,对应于其他在其类型下的特殊限制。 

 

注意

但是我发现如果你想用有符号的数字,或者有小数点的数字限制输入,如果你只是et.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAlL);是不会有效果的,而还是可以输入任意字符。

解决方法是用或将InputType.TYPE_CLASS_NUMBER 和他们或起来就可以了

比如et.setInputType(InputType.TYPE_CLASS_NUMBER |InputType.TYPE_NUMBER_FLAG_DECIMAlL); 效果就可以限制为数字,而且允许有符号。

et.setInputType(InputType.TYPE_CLASS_NUMBER |InputType.TYPE_NUMBER_FLAG_SIGNED );

 

参考:http://orgcent.com/android-edittext-validate-input-email-number/ | 萝卜白菜的博客

原创粉丝点击