有输入必有验证。为了防止用户随便输入确保提交数据的合法性,程序不得不在文本输入框(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/ | 萝卜白菜的博客