EditText如何限制输入内容

原创 2016年06月01日 16:11:38

其实我们经常遇到这样的需求,需要我们限制输入框的内容。比如,在做一个应用的登录模块的时候,可能就需要我们限制用户名和密码的格式。假如需求是用户名和密码必须都是英文字母或者数字组成,你会怎么做?可能你首先想到的是利用正则表达式,当然正则表达式可以做到,但是总有种杀鸡用牛刀的感觉。其实上面这个需求,我们只需要给EditText设置digits属性就可以了,用法如下:

<EditText
    android:id="@+id/et_test"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:digits="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789"
    />
是不是很简单,同样我们还可以通过代码的方式来限制输入框的内容,如下:
editText= (EditText) findViewById(R.id.et_test);
InputFilter[] filters = new InputFilter[1];
filters[0] = new MyInputFilter("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789");
editText.setFilters(filters);
public class MyInputFilter extends LoginFilter.UsernameFilterGeneric {
    private String mAllowedDigits;

    public MyInputFilter( String digits ) {
        mAllowedDigits = digits;
    }

    @Override
    public boolean isAllowed(char c) {
        if (mAllowedDigits.indexOf(c) != -1) {
            return true;
        }
        return false;
    }
}
假如还有位数限制的话,我们可以在配合maxLength 属性来限制,上面两种做法达到的效果是完全一样的,这种做法的缺陷是假如输入的内容不符合我们的规范,是直接不能输入的,可是有的需求是不符合规范的也可以输入,在发送请求的时候才去验证,这时候我们就需要用正则表达式去做了。原来我们对密码的验证,如下:

/**
 * 检查密码是否合法
 *
 * @param pwd
 * @return
 */
public  boolean checkPassword( String pwd) {
    if (pwd == null || pwd.length() == 0) {
        Toast.makeText(this,"密码不能为空",Toast.LENGTH_SHORT).show();
        return false;
    }
    if (pwd.length() <6) {
        Toast.makeText(this,"密码长度不能少于6",Toast.LENGTH_SHORT).show();
        return false;
    }
    if (pwd.length() >18) {
        Toast.makeText(this,"密码长度不能超过18",Toast.LENGTH_SHORT).show();
        return false;
    }
    char[] c = pwd.toCharArray();
    for (int i = 0; i < c.length; i++) {//去中文
        if ((c[i] >= 0x4e00) && (c[i] <= 0x9fbb)) {
            Toast.makeText(this,"密码中不能含有中文字符",Toast.LENGTH_SHORT).show();
            return false;
        }
    }
    String regEx = "[a-zA-Z0-9]{6,18}$"; //表示英文字母或数字并且是6-18    Pattern pat = Pattern.compile(regEx);
    Matcher mat = pat.matcher(pwd);
    boolean rs = mat.matches();
    if (!rs) {
        Toast.makeText(this,"密码格式中可能含有其他非法字符",Toast.LENGTH_SHORT).show();
        return false;
    }
    return true;

}
好了就写这么多了~



版权声明:本文为博主原创文章,未经博主允许不得转载。

EditText内容输入

Edittext内容输入限制:只允许输入英文字符与数字。 一、xml限制内容输入
  • u013205623
  • u013205623
  • 2016年09月29日 16:00
  • 389

Android EditText限制输入字符的5种实现方式

最近项目要求限制密码输入的字符类型, 例如不能输入中文。   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣。  第一种方式:  设置EditText的inputType属性...
  • brycegao321
  • brycegao321
  • 2016年08月22日 16:44
  • 10157

Android 巧用正则表达式+TextWatcher实时限制用户输入

一般我们在限制用户输入的时候,都是要等到用户在EditText里面输入了文本后,点击某个按钮,再去校验用户的输入是否符合规范。...
  • zhuwentao2150
  • zhuwentao2150
  • 2016年08月05日 09:52
  • 3012

EditText限制输入字符类型的几种方式

​       最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下: 1、第一种方式是通过EditText的inputType来实现,可以通过xml或者java文...
  • goodlixueyong
  • goodlixueyong
  • 2014年10月31日 15:22
  • 49577

android EditText控件如何禁止输入内容

问题? android EditText控件如何禁止往里面输入内容? 修改版解决方法: EditText editText =  (EditText) findViewById(R.i...
  • Sunnyfans
  • Sunnyfans
  • 2012年09月18日 18:15
  • 77029

Android 限制EditText只能输入数字、限制输入类型、限制输入长度的小技巧

准确的说让Edittext只能输入数字有方法两种,都是通过xml属性设置 方法一: ...
  • u014763302
  • u014763302
  • 2015年06月02日 16:17
  • 35244

edittext输入类型限制为ip,inputType应该如何设置

EditText android:id="@+id/et_setting_printer_edit_info_ip" android:layout_wi...
  • wusj3
  • wusj3
  • 2017年08月03日 16:21
  • 249

控制winform文本框输入字符限制(数字或字母、长度)

使用keyPress事件效果比keydown效果要好  private void txtDBThempLibName_KeyPress(object sender, KeyPressEventArg...
  • Burongwawa520
  • Burongwawa520
  • 2013年07月31日 10:18
  • 5389

【搬家】【.NET】【C#】C# 中将一个 TextBox 设置为内容只能输入 IP格式

本文最早于 2013年10月2日于本人个人博客(http://mooowooo.tk)发表,现博客搬家至此,转载请注明出处。...
  • tiwoo
  • tiwoo
  • 2014年06月18日 16:01
  • 1392

EditText限制输入字符类型的几种方式

​       最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下: 1、第一种方式是通过EditText的inputType来实现,可以通过xml或者java文...
  • goodlixueyong
  • goodlixueyong
  • 2014年10月31日 15:22
  • 49577
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EditText如何限制输入内容
举报原因:
原因补充:

(最多只允许输入30个字)