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

原文地址:Android EditText 之密码输入框显示和隐藏切换的实现_android edittext 密码框_Acoe的博客-CSDN博客

用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)
            }
 
切换为明文时的软键盘样式:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值