from (http://wenku.baidu.com/view/d392221f5f0e7cd18425368e.html)
如何设置
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只能输入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;
}
});
--------------------------------------------------------------------------------------------
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"
自动隐藏尾部溢出数据,
一般用于文字内容过长一行无法全部显示
时