实现登录页面的密码可见/不可见切换

发表于 2020-07-07 16:33:53
阅读 25

介绍

介绍

福哥在做登录功能的时候,想增加一个密码可见/不可见的开关

想着这么简单的东西,通过 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 就可以解决问题了