Android 中存在很多需要修改显示方法的地方,比如密码显示修改和字母大小写切换等。

第一直觉想到的方式就是修改输入模式setInputType()实现方式如下:

if(isChecked){      //显示密码框内容      mEditPwd.setInputType(InputType.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_NORMAL);  }else{      //隐藏密码框内容      mEditPwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);   }  mEditPwd.setSelection(mEditPwd.getText().toString().length());//设置光标位置在文本框末尾
第二种方式就是利用替代法,使用ReplacementTransformationMethod()的子类方法。

private void showPass(EditText passwordEt) {if (passwordEt.getTransformationMethod() == HideReturnsTransformationMethod.getInstance()) {passwordEt.setTransformationMethod(PasswordTransformationMethod.getInstance());} else {passwordEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance());}passwordEt.setSelection(passwordEt.getText().toString().length());}

HideReturnsTransformationMethod和PasswordTransformationMethod这两个方法都是继承自ReplacementTransformationMethod(),HideReturnsTransformationMethod指从隐藏状态显现;PasswordTransformationMethod指密码隐藏方式。

ReplacementTransformationMethod()中有两个方法比较直观,getOriginal()和getReplacement(),只要将需要被替换和替换后的字符分别以字符串数组的形式保存,并一一对应顺序。如下是一个小写切换到大写的方法。

public class InputLowerToUpper extends ReplacementTransformationMethod{     @Override     protected char[] getOriginal() {         char[] lower = { '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' };         return lower;     }        @Override     protected char[] getReplacement() {         char[] upper = { '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' };         return upper;     }    }


个人喜欢使用第二种方式,基本能满足需求,可扩展性比较好,有特殊的显示需求时可以自己扩展;第一种方式可用模式较多,可扩展性差。

本文借鉴:http://sumile.cn/archives/56.html




更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. 浅谈Android下的Wifi
  3. Android(安卓)JNI实例代码(一)
  4. Android中级篇之区分系统程序和安装程序
  5. android Service理解
  6. Android(安卓)Bitmap内存限制
  7. android AIDL简单步骤
  8. Android“再按一次退出程序”实现
  9. Android(安卓)百分比布局详解及实例代码

随机推荐

  1. js执行机制与异步任务
  2. 为什么编程都带点强迫症?
  3. 工作中线程的启动
  4. 数学相关函数在PHP中的应用简介
  5. 软件测试人员需不需懂代码
  6. 回答两个被频繁问到的代码写法问题
  7. synchronized和Lock
  8. git学习记录
  9. ElasticSearch API & 文档 curd 操作
  10. Elasticsearch aggs 聚合