设置EditText只能接收特定类型数据

本文介绍如何在Android中设置EditText,使其只能输入数字或特定字母。包括使用DigitsKeyListener和NumberKeyListener的方法,以及通过XML属性限定输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

 

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

 

et_1.setKeyListener(new DigitsKeyListener(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;

 

         }

 

         @Override

    public int getInputType() {

        // TODO Auto-generated method stub

        return android.text.InputType.TYPE_CLASS_PHONE;

    }

 

});

 

二、设置EditText只能输入某些字母,如下面设置edtitext只能输入AN,an这些字母。方法如下:

 

 

 

 

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,然后把它设为你的EditTextKeyListener   

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;  

    } 

}); 

 

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

 

01.EditText et; 

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

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

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中的字母。

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值