EditText 输入字母自动大写问题

来源:互联网 发布:淘宝详情代码生成器 编辑:程序博客网 时间:2024/05/18 19:21

今天写项目的时候,在自测的时候,操作一个 EditText 输入内容为字母和数字,并且字母全部自动大写的时候突然就停止运行了。
错误提示:
这里写图片描述

网上查阅一些资料发现,android:textAllCaps 属性是只支持 TextView 的,
EditText 是需要通过 inputType 属性来控制的

android:inputType="textCapCharacters"

但是我在测试之后,发现 EditText的这个属性并没起到作用。
最终,只能自己去控制 输入内容转换大写了。

布局文件如下:

<EditText    android:id="@+id/edit_text"    android:layout_width="match_parent"    android:layout_height="28dp"    android:background="@color/white"    android:digits="qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890"    android:gravity="center_vertical"    android:hint="请输入"    android:maxLines="1"    android:textColor="#4a4a4a"    android:textColorHint="#cbcacb"    android:textSize="14sp" />

因为我这里需要控制只能输入字母和数字,所以我用 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 0
原创粉丝点击