android输入大写字母,Android EditText 输入字母自动大写问题
今天写项目的时候,在自测的时候,操作一个 EditText 输入内容为字母和数字,并且字母全部自动大写的时候突然就停止运行了。错误提示:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~网上查阅一些资料发现,android:textAllCaps 属性是只支持 TextView 的
今天写项目的时候,在自测的时候,操作一个 EditText 输入内容为字母和数字,并且字母全部自动大写的时候突然就停止运行了。
错误提示:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
网上查阅一些资料发现,android:textAllCaps 属性是只支持 TextView 的,
EditText 是需要通过 inputType 属性来控制的
android:inputType="textCapCharacters"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
但是我在测试之后,发现 EditText的这个属性并没起到作用。
最终,只能自己去控制 输入内容转换大写了。
布局文件如下:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
因为我这里需要控制只能输入字母和数字,所以我用 digits 直接去限制能输入的字符。然后,输入内容控制了,下面该去控制让它自动转换为 大写字母了,代码通过 addTextChangedListener 来监听输入状态:
edit_text.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
// 先移除当前监听,避免死循环。
edit_text.removeTextChangedListener(this);
String string = edit_text.getText().toString().toUpperCase();
edit_text.setText(string);
edit_text.setSelection(string.length());// 让光标定位最后位置。
//操作完当前显示内容之后,再添加监听。
edit_text.addTextChangedListener(this);
}
});
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里因为自己的知识点不够全面,所以有其他处理方式的话,也请各位指点一下。
小奋斗文章
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更多推荐
所有评论(0)