TextView可以设置接受各式各样的字符,通过过滤指定的字符来满足不同应用的输入和显示要求。
NumberKeyListener myKeyListener =
new NumberKeyListener() {
public int getInputType() {
//指定键盘类型
return InputType.TYPE_CLASS_TEXT;
}
protected char[] getAcceptedChars() {
//指定你所接受的字符
return "abcdefg".toCharArray();
}
};
EditText tv = (EditText)findViewById(R.id.testEdit);
tv.setKeyListener(myKeyListener);
你可以将字符串"abcdefg"换成任意的,你想让你的EditText所接受的字符组合。
通过xml配置:
android:InputType
number 接受整数输入
numberSigned 接受有符号整数输入
numberDecimal 接受整数和小数的输入
android:digits
指定接受固定的数字,如android:digits="012345",则只接受0~5数字的输入
android:numberic
integer 接受整数输入
signed 接受有符号整数输入
decimal 接受整数和小数输入
通过java代码设置
其实以上3个属性,功能有点重复,最终都是通过java代码来对TextView设置KeyListener
KeyListener是一个接口,提供了对输入键盘按键的监听
InputFilter是一个接口,提供了对字符的过滤
android提供了实现了KeyListener和InputFilter的NumberKeyListener,而DigitsKeyListener继承了NumberKeyListener
- TextView tv = new TextView(context);
- //只接受整数输入
- KeyListener l = new DigitsKeyListener(fasle,false);
- //接受有符号整数输入
- KeyListener l = new DigitsKeyListener(true,false);
- //接受小数,整数输入
- KeyListener l = new DigitsKeyListener(false,true);
- //接受有符号整数/小数输入
- KeyListener l = new DigitsKeyListener(true,true);
- tv.setKeyListener(l);
如果想要实现更大自由度的过滤定制,可以自己写一个KeyListener(继承BaseKeyListener)并实现InputFilter,重写filter()函数,在filter()函数里可以实现自由的过滤。
NumberKeyListener myKeyListener =
new NumberKeyListener() {
public int getInputType() {
//指定键盘类型
return InputType.TYPE_CLASS_TEXT;
}
protected char[] getAcceptedChars() {
//指定你所接受的字符
return "abcdefg".toCharArray();
}
};
EditText tv = (EditText)findViewById(R.id.testEdit);
tv.setKeyListener(myKeyListener);
你可以将字符串"abcdefg"换成任意的,你想让你的EditText所接受的字符组合。