动态限制EdiText仅仅能输入特定字符
Posted gavanwanggw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态限制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;
}
});
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" 自己主动隐藏尾部溢出数据,一般用于文字内容过长一行无法所有显示时。
以上是关于动态限制EdiText仅仅能输入特定字符的主要内容,如果未能解决你的问题,请参考以下文章
如何在jQuery中的两个字符串之间获取url的特定部分[重复]
Objective-C如何限制文本字段在2次输入后只允许特定字符