动态限制EdiText仅仅能输入特定字符

怎样设置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;

            }

      });

     EditText et; 
     et = (EditText) findViewById(R.id.et); 
    // 方法1:建立一个DigitsKeyListener,然后把它设为你的EditText的KeyListener
 
      DigitsKeyListener numericOnlyListener = new DigitsKeyListener(false,true); 
     et.setKeyListener(numericOnlyListener); 
     // 方法2:为EditText设置一个NumberKeyListener,然后重写getAcceptedChars()方法和getInputType()方法
 
      et.setKeyListener(new NumberKeyListener() { 
           @Override 
           protected char[] getAcceptedChars() { 
            return new char[] { '1''2''3''4''5''6''7''8','9''0' }; 
         } 
          @Override 
          public int getInputType() { 
           // TODO Auto-generated method stub  
            return android.text.InputType.TYPE_CLASS_PHONE; 
           } 
     });  

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


小结:

第一种能够输入小数。

另外一种因为设置了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,一般用于password验证

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值