经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Android项目实战(五十二):控制EditText输入内容大小写转换
来源:cnblogs  作者:听着music睡  时间:2018/12/11 9:21:25  对本文有异议

今日需求,EditText内容为一串字符串,要求将用户软键盘输入的小写字母在输入的时候自动转为大写字母,反之亦然。

 

效果如下:

 

第一次做该需求,原先想法:

  1. EditText.addTextChangedListener(new TextWatcher() {
  2. @Override
  3. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  4. }
  5. @Override
  6. public void onTextChanged(CharSequence s, int start, int before, int count) {
  7. }
  8. @Override
  9. public void afterTextChanged(Editable s) {
  10. // 对输入后的内容进行二次处理
  11. }
  12. });

对于afterTextChanged回调方法里,对输入的字符串进行大小写转换,结果失败,因为每次转换之后实际就再次回调该方法导致死循环。

 

最后解决办法:

  1. EditText.setTransformationMethod(new ReplacementTransformationMethod() {
  2. @Override
  3. protected char[] getOriginal() {
  4. char[] originalCharArr = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' };
  5. return originalCharArr;
  6. }
  7. @Override
  8. protected char[] getReplacement() {
  9. char[] replacementCharArr = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
  10. return replacementCharArr;
  11. }
  12. });

 显而易见,该方法是对编辑框内容进行转换的操作。

 两个字符数组,分别将对应位置的原始字符转换为要求后的字符。

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号