Android EditText 之密码输入框显示和隐藏切换的实现

用EditText作为密码输入框的时候,一般密文形式显示,直接在xml设置属性

android:inputType="textPassword"

即可。

有时候如下图所示,要增加密码的显示和隐藏切换功能
在这里插入图片描述
这个时候给那个小眼睛图标加上点击事件,来实现输入框在密文和明文两种状态间切换。一般有两种实现方式:

首先看看密文下软键盘的样式:
在这里插入图片描述

然后看看两种实现方式
第一种:

ivVisible.setOnClickListener {
                ivVisible.isSelected = !ivVisible.isSelected
                if (ivVisible.isSelected) {
                    etPassword.inputType = InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
                } else {
                    etPassword.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD
                }
                etPassword.setSelection(etPassword.text?.length?:0)
            }

切换为明文时的软键盘样式:
在这里插入图片描述

第二种:

ivVisible.setOnClickListener {
                ivVisible.isSelected = !ivVisible.isSelected
                if (ivVisible.isSelected) {
                    etPassword.transformationMethod = HideReturnsTransformationMethod.getInstance()
                } else {
                    etPassword.transformationMethod = PasswordTransformationMethod.getInstance()
                }
                etPassword.setSelection(etPassword.text?.length?:0)
            }

切换为明文时的软键盘样式:
在这里插入图片描述
两种方式都能实现功能,但是交互上是不一样的,推荐使用第二种。原因是:第一种切换时,软键盘会在安全键盘切换成普通键盘,且软键盘有个收起和弹出的过程,体验上不佳,另外明文状态下可以输入中文,如果产品需求是不允许中文作为密码,那就基本可以放弃。反之,第二种方式就没有这些问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值