EditText限制字符输入

如何设置EditText,使得只能输入数字或者某些字母呢?

一、设置EditText,只输入数字:

方法1:直接生成DigitsKeyListener对象就可以了。

et_1.setKeyListener(new DigisKeyListener(false,true));

方法2:在EditText中设置属性,android:numeric="integer"即只能输入整数,如下

android:singleLine="true"

android:numeric="integer"

/>

方法3:新建一个char[],在里面添加允许输入字符。如下

editText.setKeyListener(new NumberKeyListener(){

protected char[] getAcceptedChars()

{

char[] numberChars[]={'1','2','3','4','5','6','7','8','9','0',};

return numberChars;

}

});

二、设置EditText只能输入某些字母,如下面设置edtitext只能输入A—N,a—n这些字母。方法如下:

editText.setKeyListener(new NumberKeyListener(){

protected char[] getAcceptedChars()

{

char[] numberChars[]={'a,'b','c','d','e','f','A','B','C','D'};

return numberChars;

}

});

EditText et;

et = (EditText) findViewById(R.id.et);

//方法1:建立一个DigitsKeyListener,然后把它设为你的EditText的KeyListener

DigitsKeyListener numericOnlyListener =newDigitsKeyListener(false,true);

et.setKeyListener(numericOnlyListener);

//方法2:为EditText设置一个NumberKeyListener,然后重写getAcceptedChars()方法和getInputType()方法

et.setKeyListener(newNumberKeyListener() {

@Override

protectedchar[] getAcceptedChars() {

returnnewchar[] {'1','2','3','4','5','6','7','8','9','0'};

}

@Override

publicintgetInputType() {

// TODO Auto-generated method stub

returnandroid.text.InputType.TYPE_CLASS_PHONE;

}

});

--------------------------------------------------------------------------------------------

01.EditText et;

02.et = (EditText) findViewById(R.id.et);

03.//方法1:建立一个DigitsKeyListener,然后把它设为你的EditText的KeyListener

04.DigitsKeyListener numericOnlyListener = new DigitsKeyListener(false,true);

05.et.setKeyListener(numericOnlyListener);

06.//方法2:为EditText设置一个NumberKeyListener,然后重写getAcceptedChars()方法和getInputType()方法

07.et.setKeyListener(new NumberKeyListener() {

08.    @Override

09.    protected char[] getAcceptedChars() {

10.        return new char[] { '1', '2', '3', '4', '5', '6', '7', '8','9', '0' };

11.    }

12.    @Override

13.    public int getInputType() {

14.        // TODO Auto-generated method stub

15.        return android.text.InputType.TYPE_CLASS_PHONE;

16.    }

17.});

小结:

第一种可以输入小数。

第二种由于设置了TYPE_CLASS_PHONE所以只能输入整数。且比较灵活。

============================================

很多网友可能在开发Android时发现EditText有时候需要限制用户输入的内容,通常我们可以使用正则表达式直接限制,但是Android 已经为我们准备好了EditText的输入类型,这样的比正则要有以下几点优势:

1. 开发更简单,执行速度高效。 2.输入法默认会根据情况变动,比如说设置为numeric后输入法会自动仅显示数字,不会出现Qwerty中的字母。

下面我们通过EditText的layout xml文件中的相关属性来实现:

1. 密码框属性 android:password="true"  这条可以让EditText显示的内容自动为 星号,输入时内容会在1秒内变成*字样。

2. 纯数字 android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

3. 仅允许 android:capitalize="cwj1987" 这样仅允许接受输入cwj1987,一般用于密码验证

下面是一些扩展的风格属性

android:editable="false" 设置EditText不可编辑

android:singleLine="true" 强制输入的内容在单行

android:ellipsize="end" 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,866评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,497评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • http://www.cnblogs.com/panhouye/p/6821926.html 之前做商城应用时,会...
    runner123阅读 2,731评论 0 0
  • 日,容易;更,容易;日更,不容易。今天我也想谈谈日更这件事。其实,在简书里,我是最没资格谈日更的。毕竟我才日更了六...
    杨茗辞阅读 497评论 37 22