EditText 的setKeyListener()方法的用法是输入某些特殊的字符

转载 2015年11月19日 15:06:31

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

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

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

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

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

<EditText

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;

}

});

 
  1. EditText et;  
  2. et = (EditText) findViewById(R.id.et);  
  3. // 方法1:建立一个DigitsKeyListener,然后把它设为你的EditText的KeyListener   
  4. DigitsKeyListener numericOnlyListener = new DigitsKeyListener(false,true);  
  5. et.setKeyListener(numericOnlyListener);  
  6. // 方法2:为EditText设置一个NumberKeyListener,然后重写getAcceptedChars()方法和getInputType()方法  
  7. et.setKeyListener(new NumberKeyListener() {  
  8.     @Override  
  9.     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. });  

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

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" 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时。

setKeyListener(KeyListener)方法的妙用

TextView类的setKeyListener(KeyListener)方法; 其中DigitsKeyListener类,使用getInstance(String accepted)方法即可指定E...
  • ddddwwww2
  • ddddwwww2
  • 2016年12月26日 11:52
  • 1252

Android View 属性详解

View属性说明 下面对View的属性进行详细说明 android:alpha 关联方法: setAlpha(float)  属性说明: 视图透明度,值在0-1之间。0为完全透明,1为...
  • jaysong2012
  • jaysong2012
  • 2014年11月13日 14:55
  • 2826

第26章、OnKeyListener键盘事件(从零开始学Android)

可以通过键盘事件对EMAIL进行验证(这是网上最多的例子),也可以加入关键字非法文字的过滤。如果要监听键盘事件,必须知道按下和松开两种不同的操作,在OnKeyEvent可以找到按下松开的键。我们这个案...
  • jianghuiquan
  • jianghuiquan
  • 2012年12月27日 10:54
  • 38972

Android 系列 2.12使用KeyListener控制输入

2.12使用KeyListener控制输入 问题 您的应用程序包含要在其中限制用户仅输入数字的文本框; 此外,在某些情况下,您只希望允许使用正数,整数或日期。 解 Android提供了...
  • sergeycao
  • sergeycao
  • 2017年01月06日 10:37
  • 1015

Android 系列 2.12使用KeyListener控制输入

2.12使用KeyListener控制输入 问题 您的应用程序包含要在其中限制用户仅输入数字的文本框; 此外,在某些情况下,您只希望允许使用正数,整数或日期。 解 Android提供了...
  • sergeycao
  • sergeycao
  • 2017年01月06日 10:37
  • 1015

editText限制输入的4种方法

XML布局文件限制:
  • zhoujn90
  • zhoujn90
  • 2015年04月10日 19:43
  • 4613

关于android 中EditText 特殊字符过滤和字符长度限制的最优方法

在android开发中,经常会碰到edittext中特殊字符过滤和字符长度限制同时要求的问题,由于android不同版本之间的兼容问题,以及各种手机支持情况不同,因此,经常会出现一些设备上面不兼容问题...
  • scyatcs
  • scyatcs
  • 2013年04月14日 02:23
  • 6458

Android之UI学习篇四:EditText输入表情和特殊字符

大家都知道EditText可以输入数据,如何在EditText中来插入表情,以及实现只能输入规定格式的信息呢? 首先给大家看一下实现的效果: 界面如下: 当点击"添加表情"后,会...
  • wulianghuan
  • wulianghuan
  • 2013年02月16日 23:51
  • 14810

InputFilter实现EditText过滤中文字符、空格等特殊字符

最近项目要求EditText输入文字时过滤掉中文字符、空格等特殊字符,上网查了好多资料,最后决定使用IputFilter来实现这一功能,写一篇博客来记录一下自己的心得 先上效果图 主要代码publ...
  • qq_25652907
  • qq_25652907
  • 2017年01月23日 17:47
  • 1029

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

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

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