实现 EditeText输入字母自动转为大写的两种方式:
方法一 通过editText.addTextChangedListener添加监听器进行修改
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
view.removeTextChangedListener(this);// 解除文字改变事件
view.setText(s.toString().toUpperCase());// 转换
view.setSelection(s.toString().length());// 重新设置光标位置
view.addTextChangedListener(this);// 重新绑
default:
break;
}
方法二:
通过Filter 实现 EditText输入框 所有字母大写 ,第一个参数控制大写 ,第三个参数控制输入字符长度, 要比添加
editTextView.setFilters(new InputFilter[] { alphaNumericFilter, new InputFilter.AllCaps(),new InputFilter.LengthFilter(17) });
// 输入框中只允许输入大写字母与数字
InputFilter alphaNumericFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5) {
for (int k = arg1; k < arg2; k++) {
if (!Character.isLetterOrDigit(arg0.charAt(k))) {
return "";
}
}
return null;
}
};
个人推荐第二种方式,效果要比第一种方式好很多!