项目中很多地方都需要用到输入框EditText,输入的内容可能有文字、数字、字母、金额、特殊字符等等,而且有的时候只能输入一种内容,比如数字,有的时候可以输入多种内容的组合,有的时候需要先显示数字键盘等等这些需求,小编这里总结一些这些需求的实现方式。
一、只能输入数字0~9
只需要配置digits与inputType两个属性即可实现只能输入数字的需求,详见如下代码片段:
1 | <EditText |
二、只能输入合法金额(金额带小数点)
金额的输入只需要配置inputType属性为numberDecimal即可,则自动只能允许输入数字或一个小数点。
1 | <EditText |
另外,在读取输入的金额的时候,可能要加入的校验是,如果小数点位于第一位的时候,需要自动补齐首位为0。
1 | String cashValueStr = s.toString().trim(); |
三、输入数字及大小写字母,或者另加一些特殊符号(下划线等)
对于这个需求的话,EditText默认的inputType即可,不需要去配置,因为如果配了phone的话就只能输入数字,不能输入字母,配别的暂时没想到,故在此不进行配置,改用动态代码设置的形式,如下:
1 | editText.setKeyListener(DigitsKeyListener.getInstance(getResources().getString(R.string.digists))); |
其中,digists字符串如下:
1 | <string name="digists">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-</string> |
补充:这样一来,editText的输入内容就能兼容数字、大小写字母、短横等,特殊符号还可以自行补充,并且,键盘会先弹出数字键盘。
四、可输入任何内容(数字、字母、汉字),但是先显示数字键盘
默认的键盘是可以输入任何内容,但是这里的需求是可以输入任何内容,但是要首先弹出数字键盘,当然还是不能够设置inputType为phone咯,还是得动态设置,具体如下:
1 | editText.setRawInputType(InputType.TYPE_CLASS_PHONE); |
五、如何设置进入Activity立即弹出输入法
主要是设置windowSoftInputMode为adjustResize即可,如下:
1 | <activity |