EditTex实现密码的显示隐藏

简介: EditTex实现密码的显示隐藏

在开发app时,登录和注册页面,让输入的密码是否可见的需求还是挺常见的,本以为在代码中直接设置EditText的setInputType属性就行了,谁知还是有一些坑的,本篇文章带你来填坑,前方高能,请速速避退。

完成后的效果

 在开始本文之前,先看下要实现的效果.

开始挖坑

查看EditText的setInputType可以设置的值

 先看下EditText的setInputType可以设置的Type属性有多少

etInputType可以设置的Type属性值远不止这么多,全部的属性可以到 这里查看.查看Type可以设置的值后,发现有两个Type与密码的显示和隐藏有关,分别是

TYPE_TEXT_VARIATION_VISIBLE_PASSWORD

TYPE_TEXT_VARIATION_PASSWORD

根据单词的意思我们知道第一个为显示密码,第二个为密码不可见.

在代码中设置setInputType的值

 根据查询的Type值便可以在代码中通过设置setInputType的值来让EditText输入的值显示隐藏.下面看下代码

//根据图标判断是否显示密码
    private void whetherShowPas(boolean paswdVisible) {
        if (paswdVisible) {
            //设置密码为显示的状态
  mPassWd.setInputType(TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            img_eye.setImageResource(R.mipmap.dis);
        } else {
            //设置密码为隐藏的状态
     mPassWd.setInputType(TYPE_TEXT_VARIATION_PASSWORD);
            img_eye.setImageResource(R.mipmap.hid);
        }
     mPassWd.setSelection(mPassWd.getText().length());//将光标定位到最后
    }

好了,到这里你以为就完成了,高高兴兴的跑去模拟器运行看效果,但悲催的是,切换这两个状态竟然没用,不能实现开篇时的效果.

填坑之路

 于是,我们又来查官方文档,进入刚刚查看Type值的页面,咦,这里有个Example,如下图

竟然,要再加入一个 TYPE_CLASS_TEXT,好,我们把这个值加入刚才的代码,改变后的代码如下

//根据图标判断是否显示密码
    private void whetherShowPas(boolean paswdVisible) {
        if (paswdVisible) {
            //设置密码为显示的状态
            mPassWd.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            img_eye.setImageResource(R.mipmap.dis);
        } else {
            //设置密码为隐藏的状态
            mPassWd.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD);
            img_eye.setImageResource(R.mipmap.hid);
        }
    mPassWd.setSelection(mPassWd.getText().length());//将光标定位到最后
    }

在到模拟器运行一遍,WTF,果然达到了开篇时的效果,在看下TYPE_CLASS_TEXT有什么作用

TYPE_CLASS_TEXT

Class for normal text

TYPE_CLASS_TEXT就是将EditText转化为普通文本类,原来需要将EditText转换为普通文本类设置密码是否可见才能生效。

结束语

 好了,到这里本文就结束了,可以在这里获取本文的源码。


相关文章
|
2月前
|
JavaScript 算法 数据安全/隐私保护
原生JS实现:密码输入框显示隐藏密码效果
原生JS实现:密码输入框显示隐藏密码效果
|
2月前
|
JavaScript 前端开发 数据安全/隐私保护
获取焦点后隐藏提示内容的输入框
获取焦点后隐藏提示内容的输入框
40 0
|
8月前
|
小程序 JavaScript 数据库
小程序登录按钮遮罩浮层效果
小程序登录按钮遮罩浮层效果
97 0
|
8月前
textarea文本框默认显示文本鼠标点击时清空
textarea文本框默认显示文本鼠标点击时清空
|
3天前
|
数据安全/隐私保护
Element UI 密码输入框--可切换显示隐藏,自定义图标
Element UI 密码输入框--可切换显示隐藏,自定义图标
7 0
|
2月前
根据用户是否输入和是否文本框内容为空来决定显示按钮颜色
根据用户是否输入和是否文本框内容为空来决定显示按钮颜色
23 0
|
2月前
|
前端开发 数据安全/隐私保护
【sgPasswordInput】自定义组件:带前端校验密码强度的密码输入框,能够提供密码强度颜色提示和文字提示
【sgPasswordInput】自定义组件:带前端校验密码强度的密码输入框,能够提供密码强度颜色提示和文字提示
|
2月前
|
数据安全/隐私保护
密码输入框
密码输入框。
13 1
|
2月前
|
前端开发 数据安全/隐私保护
清除IE10下input的(X)和密码输入框的眼睛图标
清除IE10下input的(X)和密码输入框的眼睛图标
33 0
|
前端开发 C# 数据安全/隐私保护
ApeForms | C# - WinForm临时对话框(消息框、提示框、输入框、密码框、单选框、多选框等)
ApeForms一款基于WinForm实现的开源免费商用的UI库,其中提供了一套便于用户交互的临时对话框组件(Dialog),可用于快速创建开发中常见的交互对话框,例如:消息框、提示框、输入框、单选框、多选框等。 ApeFree.ApeDialogs并不是一个包含Dialog实现的UI库,而是一套Dialog标准(提供了一套临时弹出对话框的实现标准)。 Dialog是界面开发过程中必不可少的组件,无论是桌面开发、Web前端开发、移动端开发,甚至命令行应用程序中的一次“Yes or No”的输入都可以看做是一次Dialog弹框。
454 0
ApeForms | C# - WinForm临时对话框(消息框、提示框、输入框、密码框、单选框、多选框等)