介绍
介绍
福哥在做登录功能的时候,想增加一个密码可见/不可见的开关
想着这么简单的东西,通过 getInputType 和 setInputType 切换一下不就好了吗?
其实不然,想象很完美,现实很残忍~~
教程
问题
我们一般情况下设置 TextView 密码域都是通过布局
android:inputType="textPassword"
来实现的
然而通过 getInputType 和 setInputType 切换 InputType.TYPE_TEXT_VARIATION_PASSWORD 和 InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 行不通
因为 getInputType 拿到的根本不是这两个任意一个
而且通过 setInputType 设置输入类型为 InputType.TYPE_TEXT_VARIATION_PASSWORD 也不能让 TextView 变成密码域
解决
福哥通过 getInputType 拿到的是一个 129 的整型,这个在 InputType 枚举里根本找不到对应项
而且通过 setInputType 设置输入类型为 InputType.TYPE_TEXT_VARIATION_PASSWORD 不仅不能让 TextView 变成密码域,还会让 TextView 密码可见
所以福哥就记住了 129 等于密码不可见状态
后面就简单了
if(textViewPass.getInputType() == 129){ textViewPass.setInputType(InputType.TYPE_CLASS_TEXT); } else{ textViewPass.setInputType(129); }
总结
其实就是摸清除真正的可以让密码不可见的状态值为 129 就可以解决问题了