首先有两种方式可以设置,在xml中和代码中都可以设置
在xml中设置的
- 在xml中设置
在代码中设置
- -
EditText有一个属性:android:digits属性
这个属性是直接在里面添加你可以在输入框中输入的类型,举个栗子:
- 只允许输入数字 android:digits="0123456789"
- 只允许输入数字和英文字母 android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
- 只允许输入数字,英文字母和@.两个符号 ndroid:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@."
digits属性只能在xml中有,在代码中找不到。
inputType属性
inputType在xml中的属性值有:
inputType属性值 含义
number 用来输入数字
textCapCharacters 输入的全部字母大写
textCapWords 输入的每个单词首字母大写
textCapSentences 输入的每个句子首字母大写
textPassword 用来输入密码,所有输入的字符都会变成星号*
textVisiblePassword 用来输入密码,输入的字符原样显示
textEmailAddress 用来输入Email地址
如果android:inputType=”number”和android:digits同时设置,优先以android:digits输入的字符以android:digits配置为准
EidtText在代码中设置的属性是 inputType
edit.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
知道了设置EditText的InputType属性值,既可以通过xml中定义,也可以在代码中设置为InputType的某种值,但是到底这些值有哪些,以及分别对应的含义是什么,则可以参考官网:
TextView | Android Developers – android:inputType
最后需要注意在代码中给inputType中设置的时候,
不能成
InputType.TYPE_XXX_VARIATION_YYY,
而是要
InputType.TYPE_CLASS_XXX | InputType.TYPE_XXXX_VARAITION_YYY
如果错写成:
inputType = InputType.TYPE_DATETIME_VARIATION_TIME;
会导致EditText点击后,不显示输入法键盘,正确的应该写成:
inputType = InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME;
就可以正常的显示键盘了。
在代码中还可以使用setKeyListener监听事件中的DigitsKeyListener设置只能输入数字:
edit_name.setKeyListener(new DigitsKeyListener(false,true));//只可以输入数字和小数
edit_name.setKeyListener(DigitsKeyListener.getInstance("0123456789"));//只能输入数字
还能使用setKeyListener中的NumberKeyListener
使用方法如下:
/***
* 只能输入小写字母和数字
* @param v
*/
public void numericOnlyListener(EditText v){
v.setKeyListener(new NumberKeyListener() {
@Override
public int getInputType() {
// TODO Auto-generated method stub
return android.text.InputType.TYPE_CLASS_TEXT;
}
@Override
protected char[] getAcceptedChars() {
// TODO Auto-generated method stub
char numberChars[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0'};
return numberChars;
}
});
}
numberChars[]数组中可以定义你输入框允许输入的字符,然后直接用就可以了